摘要: 但在很多应用中,需同时找到最大值和最小值,一般情况大家较容易想到用上面的算法独立的找到最大值和最小值,各用n-1次,共有2n-2次比较。这在大容量数据库中(n很大),效率不是很高。
在这里,我将给出一种新的算法代码,以大幅提高其效率(n很大时)。具体做法是:每次成对的处理数据,先将一对元素进行比较,然后把较大者与当前最大值比较,较小者与当前最小者比较,因此每两个元素需要3次比较。具体实现时需考虑n的奇偶,n为奇数,3【n/2】次;n为偶数,3n/2-2次。因此总的比较次数至多为3【n-2】。(注:【n】表示不大于n的整数)。
阅读全文
posted @
2012-05-14 12:39 代码之美 阅读(6489) |
评论 (2) |
编辑 收藏
摘要: 归并排序(Merge sort,即合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。原理通俗 说就是把原始数组分成若干子数组,对每一个子数组进行排序,之后把子数组与子数组合并,合并后仍然有序,直到全部合并完,形成有序的数组。其时间复杂度为O(n)O(最优)、(nlog n)(最差)。
阅读全文
posted @
2012-05-11 13:32 代码之美 阅读(1528) |
评论 (0) |
编辑 收藏
摘要: 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。其时间复杂度为O(n)(最优)、O(n^2)(最差)、O(n^2)(平均)。这是一个对少量元素进行排序的有效算法。
阅读全文
posted @
2012-05-10 12:44 代码之美 阅读(1599) |
评论 (0) |
编辑 收藏