各种排序方法的比较(转帖)

zm0011 2008-04-17 11:12:16
排序方法的选用应该根据具体情况而定,一般应该从以下几个方面综合考虑:⑴时间复杂性;⑵空间复杂性;⑶稳定性;⑷算法简单性;⑸待排序记录个数n的大小;⑹记录本身信息量的大小;⑺关键码的分布情况。

1. 时间复杂性

表8-1各种排序方法性能的比较

前面所述各种内排序的时间和空间性能的比较结果如图所示。




2. 空间复杂性

从空间复杂性看,所有排序方法分为三类:

归并排序单独属于一类,其空间复杂性为O(n);

快速排序单独属于一类,其空涓丛有晕?em>O(log2n) ~ O(n);

其它排序方法归为一类,其空间复杂性为O(1)。

3. 稳定性

所有排序方法可分为两类,一类是稳定的,包括直接插入排序、起泡排序、简单选择排序和归并排序;

另一类是不稳定的,包括希尔排序、快速排序和堆排序。

4. 算法简单性

从算法简单性看,一类是简单算法,包括直接插入排序、简单选择排序和起泡排序;

另一类是改进算法,包括希尔排序、堆排序、快速排序和归并排序,这些算法都很复杂。

5. 待排序的记录个数n的大小

从待排序的记录个数n的大小看,n越小,采用简单排序方法越合适。

6. 记录本身信息量的大小

表8-2三种简单排序算法中记录的移动次数的比较

记录本身信息量越大,移动记录所花费的时间就越多,所以对记录的移动次数较多的算法不利。

排序方法
最好情况
最坏情况
平均情况

直接插入排序
O(n)
O(n2)
O(n2)

起泡排序
0
O(n2)
O(n2)

简单选择排序
0
O(n)
O(n)


7. 关键码的分布情况

当待排序记录序列为正序时,直接插入排序和起泡排序能达到O(n)的时间复杂度;

对于快速排序而言,这是最坏的情况,此时的时间性能蜕化为O(n2);

简单选择排序、堆排序和归并排序的时间性能不随记录序列中关键码的分布而改变。
...全文
593 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zm0011 2008-04-26
  • 打赏
  • 举报
回复
同学们都不看,我自己来顶一顶
haojn 2008-04-26
  • 打赏
  • 举报
回复
好像也没有写不能同时参加...

国外还是100$吧
zm0011 2008-04-26
  • 打赏
  • 举报
回复
如果两边都可以参加,你的室内温度也许会以两倍速度增加
denghui0815 2008-04-26
  • 打赏
  • 举报
回复
好像国外的奖品增加了 :)
denghui0815 2008-04-26
  • 打赏
  • 举报
回复
都看过了 只是没有顶

568

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧