算法基础-排序
蜗牛汽车软件
这个作者很懒,什么都没留下…
展开
-
外部内部排序,稳定性
1.外部与内部排序 外部排序指的是大文件的排序,当待排序的文件很大时,无法将整个文件的所有记录同时调入内存进行排序,只能将文件存放在外存,这种排称为外部排序。外部排序的过程主要是依据数据的内外存交换和“内部归并”两者结合起来实现的。一般提到排序都是指内排序,比如快速排序,堆排序,归并排序等,所谓内排序就是可以在内存中完成的排序。RAM的访问速度大约是磁盘的25万倍,我们当然希望如果可以的话都是内排原创 2016-02-19 19:41:19 · 881 阅读 · 0 评论 -
冒泡排序Bubble Sort
冒泡排序算法的运作如下:(从后往前) 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。冒泡原创 2016-02-19 19:55:18 · 332 阅读 · 0 评论 -
选择排序Selection sort
选择排序首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。 再次,在剩下的元素中找到最小元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。 这种方法叫做选择排序,因为它在不断地选择剩余元素中的最小者。原创 2016-02-19 19:32:58 · 308 阅读 · 0 评论 -
希尔排序
对于大规模乱序数组插入排序很慢,因为它只会交换(比较)相邻的元素,因此元素只能一点一点地从数组的一端移动到另一端。希尔排序为了加快速度简单地对插入排序进行了改进,交换不相邻的元素以对数组的局部进行排序,并最终用插入排序将局部有序的数组排序。 希尔排序的思想是数组中任意间隔为h的元素都是有序的。在进行排序时,如果h很大,我们就可以将元素移动到很远的位置,为实现更小的h有序创造方便。用这种方式,原创 2016-02-22 21:58:43 · 390 阅读 · 0 评论 -
归并排序mergeSort
要点归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序的基本思想自顶向下的归并排序:将数组折半划分为两个子数组分别进行排序,最后将两个子数组进行归并。这个过程中会通过递归调用,不断分解为原创 2016-02-22 23:55:30 · 360 阅读 · 0 评论 -
插入排序insertionSort
插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。具体算法描述如下:⒈ 从第一个元素开始,该元素可以认为已经被排序⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。Ja原创 2016-02-19 21:14:15 · 322 阅读 · 0 评论 -
快速排序QuickSort
参考书为 算法 第四版。这几篇博文仅作笔记复习之用,如对他人有帮助,深感荣幸。如有错误,恳请指出~原创 2016-02-23 23:56:08 · 293 阅读 · 0 评论