代码全部C语言实现,后续有机会补上
1.冒泡排序:思想是两两比较,每次选出一个相对最大数,直至所有数都完成排序。算法复杂度O(n^2)。
优点:稳定,由于遍历比较所有未排数据所以可以在排序过程加入很多逻辑操作,优化变种空间大。
缺点:低效,大量的比较和交换。
2.选择排序:遍历所以待排序数据中最小的一个与代排数据第一个交换位置。算法复杂度O(n^2)
优点:数据最恶劣交换次数已知(n-1)次,较之冒泡排序少了很多交换,不稳定,缺点跟冒泡排序一样低效。
3.快速排序:随机从数组中选择一个数作为参考,然后将剩余数据按比之大小分成左右两部分,递归执行以上操作直至数组个数为1,此时数组排序完成。。算法复杂度为O(n*log(n))。
优点:速度快,数据交换少,算法复杂度降低,序列越乱效率越高,有序时退化为冒泡排序
缺点:不稳定
对于基准的选择:随机选取或者
优化:当数据分割到一定程度小以后使用插排。
4.插入排序:将待排序数从后往前与已排序数组比较,放到合适位置。
优点:当待排序数整体有序时,快速排序效率较高,反之则是其缺点,稳定。不适合处理大规模数据
5.哈希排序:插入排序的改良版,将待排序数按规则拆成多个子数组分别使用插入排序
优点: 快, 缺点:不稳定
6.归并排序:将待排序数组分成左右两个待排序区,递归拆分数组直至待排序数组个数为1,此时可认为两个数组已拍好序,新建一个数组将俩已拍好序数组中的数依次载入新数组中便可以了。算法复杂度O(n*log(n))。
优点是便于大数据分布式处理,稳定
参考:
https://www.zhihu.com/collection/602700944
https://blog.csdn.net/qq_39207948/article/details/80006224?utm_source=app
https://blog.csdn.net/m0_37962600/article/details/81475585
https://blog.csdn.net/u010817474/article/details/48435365