史上最简洁排序算法总结(代码略)

排序算法总结(个人理解版):

第Ⅰ类:插入排序(后边元素依次与前边元素比较排序);

第Ⅱ类:选择排序(后边元素编组,选最小与最前元素交换位置)、谢尔排序(选择排序的改进,分组的方法不同)

第Ⅲ类:冒泡排序(1/2比较,2/3比较,依次类推)、快速排序(分组后冒泡)

第Ⅳ类:堆积排序(二叉树结构排序,建立堆)

  平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 比较次数 交换次数 排序趟数
插入排序 O(n2) O(n2) O(n) O(1) 最好为n-1,最差为n(n-1)/2 最好为0,最差为n(n-1)/2 n-1
谢尔排序 O(nlog2n) O(nlog2n) O(n1.3) O(1) 最好为nlog2n,最差为n2 与gap有关,n-gap log2n
泡排序 O(n2) O(n2) O(n) O(1) n(n-1)/2 逆序数 与原始状态有关
快速排序 O(nlog2n) O(n2) O(nlog2n) O(log2n)~O(n) nlog2n,最差为n(n-1)/2 具体分析 与原始状态有关
选择排序 O(n2) O(n2) O(n2) O(1) n(n-1)/2 0~(n-1) n-1
堆积排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) nlog2n 具体分析 n-1

猜你喜欢

转载自blog.csdn.net/weixin_40017641/article/details/83050725