数据结构与算法简记--排序算法

排序算法


  • 如何分析一个“排序算法”?三个方面着手:

  • 执行效率
  1. 最好情况,最坏情况,平均情况时间复杂度
  2. 时间复杂度的系数,常数,低阶
  3. 比较次数和交换(或移动)次数
  • 内存消耗
  1. 原地排序,空间复杂度O(1)
  • 稳定性
  1. 关注的是值相同的项,排序前后的先后顺序是否不变,一致则表示是稳定算法
  • 排序比较

插入排序比冒泡排序高效--冒泡排序的数据交换有三个操作,插入排序数据移动只有一个操作,也就是复杂度系数低

排序算法 是否稳定 是否原地排序 最好情况 最坏情况 平均情况
冒泡排序 O(n) O(n2) O(n2)
插入排序 O(n) O(n2) O(n2)
选择排序 O(n2) O(n2) O(n2)
  • 冒泡排序--操作相邻数据比较互换

  • 插入排序--分已排序和未排序区间,每次从未排序取一项插入到已排序区间的合适位置(通过比较确定,比较过程中完成数据移动)

  • 选择排序--分已排序和未排序区间,每次取未排序中最小项放到已排序区间末尾,比较取最小值的过程中完成数据移动

O(n)

猜你喜欢

转载自www.cnblogs.com/wod-Y/p/11959650.html