排序系列一

141 阅读1分钟

排序稳定性

  待排的序列中,可能会存在两个或者两个以上的关键字相等的记录,排序结果可能会存在不唯一的情况,我们给出稳定与不稳定排序的定义: 假设ki=kj(1<=i<=n,1<=j<=n,i!=j),如果排序中i<j,排序后ri<rj,则方法稳定,反之,不稳定。 排序算法是否稳定,需要通过分析后才能得出。

例如:

编号姓名分数
1A92
2B98
3C92

稳定排序:

编号姓名分数
2B98
1A92
3C92

不稳定排序

编号姓名分数
2B98
3C92
1A92

内排序外排序

内排序:在排序过程中,排序的所有记录都全部放在内存中。

外排序:排序的记录太多,不能同事放在内存中,需要内外存多次交换数据才能完成。

内排序

内排序的排序算法主要受三个方面的影响:

  • 时间性能
  • 辅助空间
  • 算法的复杂性

总结

内排主要有两种操作:比较和移动,

根据排序中借助的主要操作,我们把排序分为:插入排序、交换排序、选择排序、归并排序

根据算法的复杂度来分:

简单算法:

  • 冒泡排序
  • 简单选择排序
  • 直接插入排序顺序

改进算法:

  • 希尔排序
  • 堆排序
  • 归并排序
  • 快速排序