排序算法总结

根据排序过程中的主要操作,可以将内排序分为以下几种:

  插入排序:直接插入排序,希尔排序(改进的直接插入排序)

  交换排序:冒泡排序,快速排序(改进的冒泡排序)

  选择排序:简单选择排序,堆排序(改进的简单选择排序)

  归并排序:归并排序

根据排序算法的简单性,可以将内排序分为以下两种:

  简单算法:冒泡排序,简单选择排序,直接插入排序

  改进算法:希尔排序,堆排序,归并排序,快速排序

根据排序算法的稳定性,可以将内排序分为以下两种:

  稳定算法:冒泡排序,简单选择排序,直接插入排序,归并排序

  不稳定算法:希尔排序,堆排序,快速排序

  注:若;两个记录的关键字的值相等,经过排序之后,其先后位置仍然保持不变,则称该排序算法是稳定的,否者,是不稳定的。

根据排序算法的时间复杂度,可以将内排序分为以下几种:

  O(n2):冒泡排序,简单选择排序,直接插入排序,

  O(nlogn)-O(n2):希尔排序

  O(nlogn):堆排序,归并排序,快速排序

根据排序算法的空间复杂度,可以将内排序分为以下几种:

  O(1):冒泡排序,简单选择排序,直接插入排序,希尔排序,堆排序

  O(n):归并排序

  O(logn)~O(n):快速排序

快排的最坏时间虽然复杂度高,但是在统计意义上,这种数据出现的概率极小,综合考虑各项指标 https://blog.csdn.net/u010189459/article/details/27702027 ,经过优化的快速排序性能最佳!

相关链接:

冒泡排序 https://www.cnblogs.com/yongjin-hou/p/13858510.html

简单选择排序 https://www.cnblogs.com/yongjin-hou/p/13859148.html
直接插入排序 https://www.cnblogs.com/yongjin-hou/p/13861458.html
希尔排序 https://www.cnblogs.com/yongjin-hou/p/13866344.html

堆排序 https://www.cnblogs.com/yongjin-hou/p/13873770.html

归并排序 https://www.cnblogs.com/yongjin-hou/p/13921147.html

快速排序 https://www.cnblogs.com/yongjin-hou/p/13950379.html

 

参考书籍:程杰 著,《大话数据结构》,清华大学出版社。

原文地址:https://www.cnblogs.com/yongjin-hou/p/13956121.html