随笔分类 - 数据结构
摘要:将前面写的几个排序算法整理了一个,合在一起。1.适合于实现了IComparable接口的任何类型的数组2.这个类可以当成一个工具类3.以后如果实现了其他的排序算法还会再加进来,目前有直接插入排序,希尔排序,冒泡排序,快速排序,选择排序。其中冒泡和选择比较简单, 希尔和快速排序比较复杂,都用上递归了。
阅读全文
摘要:基本思想 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是稳定的排序方法。 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1..n],有序区为空。 ②第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[...
阅读全文
摘要:快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 算法过程 设要排序的数组是A[0]……A[N-1]...
阅读全文
摘要:冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一...
阅读全文
摘要:希尔排序(缩小增量法) 属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序 排序过程:先取一个正整数d1<n,把所有序号相隔d1的数组元素放一组,组内进行直接插入排序;然后取d2<d1,重复上述分组和排序操作;直至di=1,即所有记录放进一个组中排序为止 初始:d=5 49 38 65 97 76 13 27 49* 55 04 49 13 |--...
阅读全文
摘要:直接插入排序(straight insertion sort)的作法是: 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。 第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。 直接插入排序属于稳定的排序,时间复杂性为o(...
阅读全文
摘要:[代码][代码]PS:怎么这么慢,一张几K的图片传了10多分钟,真够郁闷的,算了,不上图了,NND
阅读全文