![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
文章平均质量分 71
无奈>_<
这个作者很懒,什么都没留下…
展开
-
快速排序交换法------2
嗯...本人在【模板】快速排序 - 洛谷题上看到大佬的题解。觉得我之前写的好像很复杂。代码:#include<iostream>using namespace std;int n,a[1000001];void qsort(int l,int r)//应用二分思想{ int mid=a[(l+r)/2];//中间数 int i=l,j=r; do{ while(a[i]<mid) i++;//查找左半部分比中间数大的数原创 2021-10-30 17:25:54 · 136 阅读 · 0 评论 -
快速排序挖坑法
快速排序是一种高效的排序算法,不管是考研还是公司面试,快速排序算法都是我们必不可少的知识点。本解析为快速排序的挖坑法(快排还有交换法)。快速排序的挖坑法是快速排序的原理的实现。具体的步骤:设定一个基准值(一般为序列的最左边元素,也可以是最右变的元素)此时最左边的是一个坑。 开辟两个指针,分别指向序列的头结点和尾结点(选取的基准值在左边,则先从右边出发。反之,选取的基准值在右边,则先从左边出发)。 从右指针出发依次遍历序列,如果找到一个值比所选的基准值要小,则将此指针所指的值放在坑里,左指原创 2021-10-30 15:50:40 · 1181 阅读 · 3 评论 -
快速排序交换法------1
快速排序简称“快排”。在C++STL模板库内有快排的函数sort();这就阻挡住我们更深入理解快排。快排不管是各个公司的面试,还是考研,都是必考的知识点。快排其实很简单,接下来我们了解一下快排:快速排序(Quicksort)是对冒泡排序算法的一种改进。快速排序算法通过多次比较和交换来实现排序,具体步骤如下:注明:本解析的主要方法为交换法。还有一种方法为挖坑法。开辟两个指针,分别指向序列的头节点i,序列的尾节点j。 设定一个分界值(一般为该序列的第一个元素),通过该分界值将数组分成左右两部分。原创 2021-10-26 16:07:10 · 764 阅读 · 0 评论 -
插入排序及希尔排序
插入排序:插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。基本思想:插入排序就好比如有一副杂乱的扑克牌,当你抓牌的时候,就是要将相同的摆在一起,并将牌从小到大(从大到小)的顺序排列。核心操作:扑...原创 2021-10-23 16:11:25 · 364 阅读 · 1 评论 -
归并排序及求逆序对数
什么是归并排序?归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。...原创 2021-10-22 12:00:46 · 1308 阅读 · 1 评论