MOOC上学的快速排序所以代码和视频的有些相似
自己对快速排序的理解大概就是,先任意选择一个数然后把比它大的和比他小的分别放到两侧。然后分别对两边再进行上述操作,知道分到只剩一个数再返回。
贴上代码
#include <iostream>
using namespace std;
void swapp(int &a, int &b) //用于交换的函数
{
int temp = a;
a = b;
b = temp;
}
void quicksort (int a[], int s, int e)
{
if(s >= e)
return;
int k = a[s];
int i = s;
int j = e;
while(i != j)
{
while(a[j] >= k&&j > i)
--j;
swapp(a[i],a[j]);
while(a[i] <= k&&i < j)
++i;
swapp(a[i],a[j]);
}
quicksort(a, s, i - 1);
quicksort(a, i + 1, e);
}
int main()
{
int a [40]{345,345,765,32,56,5,5,23,45,567,45,34,56,56,56,56,54,57,678,4,354,67,576,45,65,82436,678547,3425,56,34,55,443,5867,43,647,56,5,3654};
quicksort(a, 0, 40);
for(auto c: a)
{
cout << c<< endl;
}
return 0;
}