2011年9月27日
摘要: 这个问题来自算法导论的习题9.1-1.问题是这样的:证明:在最坏情况下,利用n+[lgn]-2次比较,即可找到n个元素中的第二小元素。证明:构造出这种比较方法就可以了。看见lgn就应该想到配对。实际上,将n个元素两两分组进行比较,选取每次比较中的较小元素,这样一来,可以一直做下去直到得到最小元素,这需要n-1次比较。将想原来做到的淘汰赛问题,一场比赛淘汰一支球队,一共就需要n-1场比赛决出冠军。接下来,次小的元素肯定是和最小元素比较过的,回溯与最小元素比较过的元素,最坏情况下需要二叉树的高度这么多次,所以还需要[lgn]-1次比较。所以总共需要n+[lgn]-2次比较。 阅读全文
posted @ 2011-09-27 02:24 bovine 阅读(730) 评论(0) 推荐(1) 编辑
摘要: 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法:这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择排序:O(n*n)快速排序:平均时间复杂度log2(n)*n,所有内部排序方法中最高好的,大多数情况下总是最好的。归并排序:log2(n)*n堆排序:log2(n)*n希尔排序:算法的复杂度为n的1.2次幂这里我没有给出行为的分析,因为这个很简单,我们直接来分析算法:首先我们考虑最理想的情况1.数组 阅读全文
posted @ 2011-09-27 01:04 bovine 阅读(576) 评论(0) 推荐(0) 编辑