![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
文章平均质量分 77
huangjh2018
这个作者很懒,什么都没留下…
展开
-
排序算法——快速排序
快速排序(Quick Sort)是对冒泡排序的一种改进。它的基本思想是,通过一趟排序将待排记录分割成独立的两部分吗,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 假设待排序的序列为{L.r[s],L.r[s+1],... ,L.r[r]},首先任意选取一个记录(通常可选第一个记录L.r[s])作为枢轴,然后按下述原则重新排列其余记录:将所有关键字较它小的记录都安置在它的位置之前,将所有关键字较它大的记录都安置在它的位置之后,由此可以该“枢轴”原创 2017-12-19 20:40:05 · 760 阅读 · 0 评论 -
排序算法——堆排序
堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法,它是选择排序的一种。堆是一个完全的二叉树,分为最大堆和最小堆(通常最大堆用于堆排序,最小堆用于构造优先队列)。最大堆要求每个节点的值都不大于其父节点的值,而最小堆要求每个节点的值都要大于其父节点的值。由于堆排序使用最大堆,这里就讲解最大堆。 最大堆排序的基本思想:先将初始序列R[1...n]建成一个最大堆,此堆为初始的无序区;再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1...原创 2017-12-20 21:04:05 · 271 阅读 · 1 评论 -
排序算法——归并排序
1. 算法概述归并排序(Merging Sort)是又一类不同的排序方法。“归并”的含义是将两个或两个以上的有序表组合成一个新的有序表,无论是顺序存储结构还是链表存储结构,都可在O(m+n)的时间量级上实现。利用归并的思想容易实现排序。假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或1的有序子序列;再两两归并,......,如此重原创 2017-12-23 15:29:35 · 389 阅读 · 0 评论 -
排序算法——插入排序
最简单的排序算法之一是插入排序。对于少量元素的排序,它是一个有效的算法。插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左(或从左到右)将它与手中的牌精细比较。插入排序由N - 1 趟排序组成。对于P = 1 趟到 P = N - 1 趟,插入排序保证从位置0到位置P上的元素为已排序状态。原创 2017-12-16 12:22:26 · 241 阅读 · 0 评论 -
排序算法——冒泡排序
冒泡排序(Bubble Sort)是借助“交换”进行排序的算法。 冒泡排序的过程很简单。首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序(即L.r[1].key > L.r[2].key),则将两个记录交换之,然后比较第二个记录和第三个记录的关键字。依次类推,直至第n-1个记录和第n个记录的关键字进行过对比为止。上述过程称作第一趟冒泡排序,其结果使得关键字最大的记录被安置到最后一个记录的位置上。然后进行第二趟冒泡排序,对前n-1个记录进行同样的操作,其结果是使得关键字次大的记录被安置到第n原创 2017-12-17 11:18:34 · 1039 阅读 · 0 评论 -
排序算法——选择排序
1. 算法概述选择排序是对冒泡排序的一种改进。选择排序(Selection Sort)的基本思想是:每一趟在n-i+1(i=1,2,...,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树形选择排序和堆排序。2. 简单的选择排序2.1 简单的选择排序分析简单的选择排序可以描述为:在一个长度为N的无序数组中,在第一趟遍历N个数据,找原创 2017-12-17 11:31:52 · 357 阅读 · 0 评论