排序算法系列总结

声明:引用请注明出处http://blog.csdn.net/finish_dream/article/details/70242890


引言

最近两周把排序算法学习实现了一遍,主要包括插入排序,选择排序,交换排序以及归并排序等排序算法,本篇文章主要用来对这几个算法进行下归类分析,最后再给出每种算法的时间、空间复杂度。

所有算法一律用C#实现的,接下来有时间我会迭代一下的,用C实现算法,毕竟就效率而言还是C更棒一点,个人觉得用C来写算法也更合适一点。不过可能就不会在CSDN博客上更新了,只会在我的Github上new一个项目来更一下,感兴趣的可以去我Github上面fork一下看一下,至于链接前几篇文章的末尾都有,而且本篇文章的结尾也会有的。


分类比较

排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。

我们这里总结的排序算法一律为内部排序算法。

这里写图片描述

当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。

快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;

各种算法时间、空间复杂度一览表

这里写图片描述

这里写图片描述


完整代码被我放在了Github上,感兴趣的可以下下来看一下https://github.com/Finish-Dream/DSAlgorithm

原文地址:https://www.cnblogs.com/haxianhe/p/9271046.html