总结各种算法之前,现介绍下几个概念:1、稳定度:稳定排序算法会依照相等的关键(换言之就是值)维持纪录的相对次序。也就是一个排序算法是稳定的,就是当有两个有相等关键的纪录R和S,且在原本的串行中R出现在S之前,在排序过的串行中R也将会是在S之前。2、计算的复杂度(最差、平均、和最好表现),依据串行(l...
分类:
其他好文 时间:
2014-07-29 20:42:02
阅读次数:
296
题目大意:众所周知冒泡排序算法多数情况下不能只扫描一遍就结束排序,而是要扫描好几遍。现在你的任务是求1~N的排列中,需要扫描K遍才能排好序的数列的个数模20100713。注意,不同于真正的冒泡排序算法,只要数列有序就立刻停止,而不用再检验一遍。估计多数人都是找规律吧,先看出递推,然后求出通项……这个...
分类:
其他好文 时间:
2014-07-29 10:40:06
阅读次数:
270
归并排序(merge sort)是一个时间复杂度为O(nlogn)的基于比较的排序算法(comparison based sorting algorithm)。 归并排序大多数实现(implementation)都将其实现成了一个stable sort, 所谓的stable sort的意思就是the implementation preserves the input order of equal...
分类:
编程语言 时间:
2014-07-28 15:55:43
阅读次数:
392
java希尔排序算法 代码下载地址:http://www.zuidaima.com/share/1550463279090688.htm...
分类:
编程语言 时间:
2014-07-28 00:21:49
阅读次数:
248
写出一个较好的快速排序程序
快速排序是常用的排序算法之一,但要想写出一个又快又准的使用程序,就不是那么简单了
需要注意的事项
首先要写正确。通常使用递归实现。其递归相当于二叉树展开,因此如果要用迭代实现的话需要使用一个队列来保存后续遍历信息。快速排序需要找到一个pivot值,如果顺序选择pivot则易造成N^2的复杂度,如果使用随机数则效果最好,但开销又太大,采取三数中值法比较合适。...
分类:
其他好文 时间:
2014-07-27 11:19:02
阅读次数:
190
以下程序均将数据封装于DataWrap数据包装类中,如下所示: 1 //数据包装类 2 class DataWrap implements Comparable 3 { 4 int data; 5 String flag; 6 pu...
分类:
编程语言 时间:
2014-07-26 01:26:36
阅读次数:
426
一、直接插入排序算法:void insertSort(int* data, int len){ int sentry;//哨兵 int i,j; for(i = 1; i 1)趟排序时,前(i-1)个记录已经有序,于是查找插入位置我们可以用折半查找。算法如下: 1 void bI...
分类:
其他好文 时间:
2014-07-26 00:41:36
阅读次数:
284