排序

排序的稳定性:由于排序不仅是针对主关键字,对于次关键字,因为待排序的记录序列中可能存在两个或两个以上的关键字相等的记录,排序结果可能会存在不唯一的情况。假设ki=kj,且在排序前的序列中ri领先于rj。如果排序之后ri仍领先于rj,则称所用的排序方法是稳定的,反之,若可能使得排序后的序列中rj领先于ri,则称所用的排序方法不稳定。

内排序:在排序的整个过程中,待排序的所有记录全部被放置在内存中。

外排序:由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要在内外存之间多次交换数据才能进行。

时间性能:在内排序中,主要进行比较和移动,高效的内排序算法应该具有尽可能少的关键字比较次数和尽可能少的记录移动次数。

辅助空间:辅助存储空间是除了存放待排序所占用的存储空间之外,执行算法所需要的其他存储空间。

内排序:插入排序(直接插入排序—>希尔排序)、交换排序(冒泡排序—>快速排序)、选择排序(简单选择排序—>堆排序)和归并排序。

简单排序算法:冒泡排序、简单选择排序和直接插入排序。

改进排序算法:希尔排序、堆排序、归并排序和快速排序。


排序方法平均情况最好情况最差情况辅助空间稳定性
冒泡排序O(n^2)O(n)O(n^2)O(1)稳定
简单选择排序O(n^2)O(n^2)O(n^2)O(1)稳定
直接插入排序O(n^2)O(n)O(n^2)O(1)稳定
希尔排序O(nlogn)~O(n^2)O(n^1.5)O(n^2)O(1)不稳定
堆排序O(nlogn)O(nlogn)O(nlogn)O(1)不稳定
归并排序O(nlogn)O(nlogn)O(nlogn)O(n)稳定
快速排序O(nlogn)O(nlogn)O(n^2)O(logn)~O(n)不稳定

考虑时间复杂度:

最好情况下,冒泡和直接插入

最坏情况下,堆和归并

考虑空间复杂度:堆

考虑稳定性:归并

考虑待排序列的个数,个数越小,采用简单排序方法越合适,越大,采用改进排序方法越合适。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值