首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 各种排序方法的比较(转帖)
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于: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);

    简单选择排序、堆排序和归并排序的时间性能不随记录序列中关键码的分布而改变。
    10  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-26 11:17:551楼 得分:0
    同学们都不看,我自己来顶一顶
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-26 20:00:222楼 得分:0
    都看过了 只是没有顶
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-26 20:00:463楼 得分:0
    好像国外的奖品增加了 :)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-26 20:11:144楼 得分:0
    如果两边都可以参加,你的室内温度也许会以两倍速度增加
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-26 21:26:085楼 得分:0
    好像也没有写不能同时参加...

    国外还是100$吧
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved