第一次動手寫快排,直接給代碼了。
#include<iostream>
#include<time.h>
using namespace std;
void exch(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
void q_sort(int arr[],int s,int e)
{
if(s<e)
{
srand((unsigned)time(NULL)); //產生隨機數種子
int index=(rand()%(e-s+1))+s;//[s,e]
exch(arr[index],arr[e]);
int i;
int j=s;//j記錄分界線
for(i=s;i<e;i++)
{
if(arr[i]<arr[e])
{
exch(arr[i],arr[j]);
j++;
}
}
exch(arr[j],arr[e]);
q_sort(arr,s,j-1);
q_sort(arr,j+1,e);
}
}
int main()
{
int n;
int *num;
int i;
while(cin>>n && n>0)
{
num=new int[n];
for(i=0;i<n;i++)
cin>>num[i];
q_sort(num,0,n-1);
for(i=0;i<n;i++)
cout<<num[i]<<' ';
cout<<endl;
}
return 0;
}