排序
Mr.Dimple
这个作者很懒,什么都没留下…
展开
-
排序算法——快速排序
快速排序其基本思想是:通过一趟排序,将整个待排序列分为两部分:1、该部分所有数都小于等于整个序列的某一个元素;2、该部分所有数都大于整个序列的某一个元素。改元素被称为哨兵位。然后按照此方法再对两部分子序列进行快速排序,直至整个序列达到有序为止。很明显,该算法可以用递归的思想实现。每一趟排序的过程叫做PARTITION:每次选取序列的第一个元素作为哨兵位;两个指针分别指向待排序列的首和尾;通过比...原创 2019-07-13 16:11:22 · 159 阅读 · 0 评论 -
排序算法——希尔排序
希尔排序希尔排序是插入排序的一种,但它是普通插入排序经过一定改进后的一种更为高效的算法,也被成为缩小增量排序。希尔排序的主要思想:通过记录待排序列下标的增量进行分组,对每一个子序列采用插入排序,不断减少增量,当增量为1时2,整个序列被分为一组,即已经被排好。希尔排序算法的时间复杂度为O(n^2)。伪代码SHELLSORT(A) d=A.length do d = d/2 ...原创 2019-07-22 16:39:16 · 420 阅读 · 0 评论 -
排序算法——基数排序
基数排序基数排序与桶排序非常容易混淆,他也是通过桶来排序,不同的是,基数排序的过程与桶排序有所不同,且只需要0-9号10个桶即可。基数排序的主要思想:将待排序列从低位开始排序,放入对应桶中,得到第一次子序列,再把这个子序列根据十位放入桶中,再得到子序列,以此循环,直至排完最高位,即得到最终的排序序列。根据序列从高位开始拍,或从低位开始拍,基数排序又分为:LSD——从低位开始MSD——从高...原创 2019-07-21 15:33:00 · 1687 阅读 · 1 评论 -
排序算法——桶排序
桶排序桶排序又称箱排序,其主要思想近乎分治法的思想。其原理是:讲待排序列(集合)中的元素分到数量有限的桶中,每个桶在进行排序。桶排序不属于比较排序的一种,因此不受排序算法时间复杂度下限nlogn的限制。桶排序算法的时间复杂度为O(n)。是所有排序算法中最快的,但桶排序的空间复杂度也对应较高,是以空间换时间的排序算法。同时,需要注意的是,桶排序对数据进行了一定的要求和限制,并不是所有情况下都能...原创 2019-07-20 17:24:06 · 1814 阅读 · 0 评论 -
排序算法——计数排序
计数排序计数排序是一种基于分配而非基于比较的排序算法,因此不受比较排序时间复杂度下限nlogn的限制。其主要思想是:对于一个待排序列中的任意一个元素,只要确定了有多少个小于该元素的值,即可确定该元素的位置。例如,要找出待排序列中x的位置,且该序列中只有6个元素小于x,则x的位置即为7。计数排序对待排序列的数据有一定的要求:待排序列中的元素必须为自然数。计数排序算法时间复杂度为O(n+k),...原创 2019-07-16 15:16:07 · 242 阅读 · 0 评论 -
排序算法——堆排序
堆排序堆排序是通过堆这种特殊的数据结构进行排序的一种排序算法。堆:由完全二叉树构成,且具有一定的大小关系;二叉树根为最小值的堆被称为小顶堆,反之,根节点为最大元素的堆被称为大顶堆。对于一个堆,按层进行编号,根节点为0号,依次往下编号,对应于一个序列(集合)的下标。堆的两个重要性质:1、结点i的父节点为i/2;2、结点i的左子节点为2i,右子节点为2i+1。堆排序的基本思想是:设给待排...原创 2019-07-14 22:30:33 · 757 阅读 · 0 评论 -
排序算法——选择排序
选择排序选择排序是一种非常直观的排序方法。其原理是:对于一个待排序列,每一次从其中选出最大(小)的元素,存放在序列的起始位置,直至整个序列全部排序完成。选择排序与插入排序的思考方向正好相反,选择排序是对于固定位置,找对应元素;插入排序是对于固定某一元素,找对应位置。方法不同,但结果都是一样的。选择排序算法时间复杂度为O(n^2)。伪代码SELECTIONSORT(A) for j = ...原创 2019-07-14 16:59:02 · 192 阅读 · 0 评论 -
排序算法——冒泡排序
冒泡排序冒泡排序是一种简答的排序方法,其模拟了较大的数会慢慢“浮”到最开始一端(或慢慢“沉”到结尾的一端)。其基本原理是:比较相邻的两个数,如果前一个比后一个大,则交换这两个元素。一轮排序过后,就能找出该序列中最大(小)的数,且放在了正确的位置。不断循环,找出第二大的数,第三大的数······,直到整个数组遍历完没有任何一对元素需要交换。冒泡排序算法的时间复杂度为O(n^2)。伪代码BU...原创 2019-07-14 16:06:16 · 165 阅读 · 0 评论 -
排序算法——归并排序
归并排序其基本思想是:对于两个有序序列(集合),将其融合在一起得到一个新的有序序列,又被称为二路归并。因此,归并排序的过程就是:首先将一个待排序列不断划分,划分为原来的一半,直至子序列只有一个元素为止,此时,每一个子序列只有一个元素,也就是每个子序列都是有序的。这个过程被称为分。再将子序列对应融合,按照一定的大小顺序合并在一起,最终得到有序序列,这个过程被称为合。归并排序是分治法的经典问题。...原创 2019-07-14 10:44:41 · 273 阅读 · 0 评论 -
排序算法——插入排序
插入排序其基本思想是:有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序。即将一个元素插入到已排好序的序列中,从而得到一个新的排好序的序列,完成排序。对于一个待排序列A,构造一个与之长度相等的空序列B作为排序序列,将A中的每一个元素依次插入到B中,通过与B中元素比较大小来确定该元素的位置。插入排序和冒泡排序较为类似。插入排序算法时间复杂度为O...原创 2019-07-13 18:07:22 · 195 阅读 · 0 评论 -
排序算法比较、总结
各种排序算法的比较与总结排序算法是算法中一种最为基础、普遍的算法,在实际生活中应用广泛。针对不同的数据类型,特点,选择合适的排序的算法能够获得很高的程序效率。经过这几天对各个排序算法的学习,复习,现在对其进行比较和总结。常见的10种排序算法详见:快速排序插入排序归并排序冒泡排序选择排序堆排序希尔排序计数排序桶排序基数排序各种排序算法的比较排序算法最优时间复...原创 2019-07-22 21:57:24 · 168 阅读 · 0 评论