这里采用划分加递归的方式实现从小到大的排序方式
源码如下:
#include<iostream>
using namespace std;
int partition(int *p,int l,int r) //Lumuto划分算法
{ //利用Lumuto算法,用第一个元素作为中轴对子数组进行划分
//输入数组arr[0,n-1]的一个子数组arr[l,r](l<=r)
//输出arr[l,r]的划分和中轴的新位置
int pivot=p[l];
int s=l;
for(int i=l+1;i<=r;i++)
{
if(p[i]<pivot)
{
s += 1;
swap(p[s],p[i]);
}
}
swap(p[l],p[s]);
return s;
}
void quick_sort3(int arr[],int l,int r) //排序函数
{
int key=0;
if(l<r)
{ //使用划分递归实现排序
key=partition(arr,l,r);
quick_sort3(arr,l,key-1);
quick_sort3(arr,key+1,r);
}
}
int main()
{
// int arr[50001]={3,0,5,4,1,2};
//int len=6;
int arr[50001];
int len;
cin>>len;
for(int j=0;j<len;j++)
cin>>arr[j];
quick_sort3(arr,0,len-1);
for(int i=0;i<len;i++)
{
if(i!=len-1)
cout<<arr[i] <<" ";
else cout<<arr[i]<<" "<<endl;
}
return 0;
}