第7章 排序

插入排序

  • 算法 : 插入排序由N-1趟排序组成。对于p=1到N-1趟,插入排序保证从位置0到位置p上的元素为已排序状态。
  • 时间复杂度 : O(N^2)

希尔排序

  • 算法 : 它通过比较相距一定间隔的元素来工作;各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。
  • 时间复杂度 : 使用希尔增量时希尔排序的最坏运行时间为O(N^2); 使用Hibbard增量的希尔排序的最坏情形运行时间为 O(N^3/2)

堆排序

  • 算法 : 花费O(N)的时间建立二叉堆(上滤操作),然后执行N次deleteMin操作
  • 算法复杂度 : 花费O(N)的时间建立二叉堆,deleteMin花费O(logN)的时间,总的算法复杂度为O(NlogN)

归并排序

  • 算法 :合并两个已经排序的表
  • 算法复杂度 : 以O(NlogN)最坏情形时间运行
  • 特点 : 所使用的比较次数几乎时最优的,它是递归算法的一个好的实例,经典的分治策略

快速排序

  • 算法 :选取枢纽元,交换枢纽元左右两端元素,对左右两端元素进行快速排序
  • 算法复杂度 : 平均运行时间O(NlogN),最坏情形性能为O(N^2)
  • 特点 : 非常精炼和高度优化的内部循环,是一种分治的递归算法

基数排序

  • 算法 :p为最大的位数,分别以个位到最高位为依据进行p次排序
  • 实现 :申请b个桶,一般为0到9,将扫描过的数据放入桶中,再将数据取出,依次执行p次
  • 算法复杂度 : 运行时间O(p(N+b))次
  • 特点 : 有值域从0~999的10个数字要排序

桶排序

  • 算法 :申请大小为M的数组,根据输入数据将数组下标置1,打印值为1的元素下标
  • 算法复杂度 : 如果M为O(N),那么总时间就是O(N)
  • 特点 : 输入数据为仅由小于M的正整数组成

猜你喜欢

转载自blog.csdn.net/DMW2016/article/details/82975167