排序算法 常见排序算法特性比较

排序的概念

排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。

内外部排序

内部排序:数据元素全部放在内存中的排序。
外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

稳定与非稳定排序

稳定排序:能够通过一些控制手段达到具有稳定性的排序

  1. 直接插入排序

  2. 冒泡排序

  3. 归并

稳定性在某些场景下需要:一场考试,可能会有相同分数出现,为了给相同分数排名,选择让先交卷的排名更高;在这种场景下,稳定性的作用就体现了.这种场景是一种对键值对<key,value>数据的排序.

不稳定排序:无法具有稳定性的排序

  1. 希尔排序

  2. 快速排序

  3. 直接选择排序

  1. 堆排序

改进排序的指标

  • 比较次数
  • 移动次数

图片