一、学习要点:
1.利用递归分治的思想;
2.利用挖坑的思想,调整数组左边的元素一直小于某一个数,数组右边的数一直大于某一个数;
3.详细原理说明:
https://blog.csdn.net/MoreWindows/article/details/6684558
二、代码
#include<stdlib.h>
#include<iostream>
sing namespace std;
void quick_sort(int a[],int l,int r)
{
if(r>l)
{
int i=l,j=r,x=a[0];
while(j>i&&a[j]>=x)
{
j--;
}
if(j>i)
{
a[i++]=a[j];
}
while(i<j&&a[i]<x)
{
i++;
}
if(i<j)
{
a[j--]=a[i]
}
a[i]=x;
quick_sort(a,l,i-1);
quick_sort(a,i+1,r);
}
}
int main()
{
int a[20] = { 5,6,8,3,2,4,1,7,9,10,11,19,12,18,13,17,14,16,15,30 };
quick_sort(a,0,19);
for(int i=0;i<20;i++)
{
cout<<a[i]<<endl;
}
system("pause");
return 0;
}
三、运行结果: