DS13_排序a_陈越主编_数据结构.ppt

* * * * * * * * * * * * * 第7章 排序 §7.1 引子 ?排序是很常见的一类问题(并不局限于排序本身) [例7.1] 有1亿个随机给出的浮点数,请找出其中最大的1万个。 方法1: 简单选择法 ? 总比较次数为N-1+(N-2)+…+(N-10000)次。当N为1亿时,大约为1万亿次。 “分而治之” 方法2: ? 比如,以1百万为一个块,分为100块,分别对这100块数据进行排序。由于只需要得到最大的1万个数,故每块排完后可以只要前1万个数,再从这100块共100万个数中取最大的1万个就可以了。 ? 当N为100万时,O(NlogN)是2000万,所以求解101块百万数据的排序问题,时间大约是20亿次运算。 堆选择 方法3: ? 先读出1百万个数,建立初始堆(100万运算量),对剩下的近1亿个数进行过滤:每次读入剩下的一个数,如果该数小于等于这1万个数的最小值,则继续读下一个数;否则,用该数替代1万个数里的最小值。 ? 100万(1百万建堆)+ 1亿(顺序过滤)+ 14 * 1千万,共约2.4亿。 (1万亿) (20亿) (2.4亿) N=1亿,log10000=14 过滤所有数据需要 14亿? No! 随机数将使得绝大多数 很快被排除!比如只有 大约1/10需要替换。 第7章 排序 §7.2 选择排序 ?简单选择排序 ? 时间复杂

文档评论(0)

1亿VIP精品文档

相关文档