本来吧,快排我已经写了一两篇文章记录了,但是我有一点强迫症,我想让这个系列能包括尽量全面的算法和知识点,所以我又重新写了一篇文章放在这里,其实就是签个到hhh
具体的教程还是看别人的文章把,这些排序算法的讲解都要做很多图,我没这个耐心https://www.cnblogs.com/lifexy/p/7597276.html
#include<iostream>
#include<vector>
using namespace std;
void QuickSort(vector<int> &arr,int left,int right)
{
if (left >= right)
{
return;
}
int i = left, j = right;
int temp = arr[left];
while (i<j)
{
while (i<j && arr[j]>temp) //找比temp小的元素
{
j--;
}
if (i < j)
{
arr[i] = arr[j];
i++;
}
while (i < j && arr[i] < temp) //找比temp大的元素
{
i++;
}
if (i < j)
{
arr[j] = arr[i];
j--;
}
}
arr[i] = temp;
QuickSort(arr,left,i-1); //分治
QuickSort(arr, i+1, right);
}
int main()
{
vector<int> Input = {1,6,3,9,7,8,4,2,0,74,93,12,16,4,3,64,25,20};
int size = Input.size();
int left = 0;
int right = size - 1;
QuickSort(Input,left,right);
for (int i = 0; i < size; i++)
{
cout << Input[i] << " ";
}
system("pause");
return 0;
}