嗯…我的解法如下
想了半天終於出來…
我覺得這有時候是要靠靈感的
#include<iostream>
using namespace std;
void quicksort(int[],int,int);
int partition(int[],int,int);
int main()
{
const int arraysize=10;
int array[arraysize]={37,2,6,4,89,8,10,12,68,45};
cout<<"origin: ";
for(int a=0;a<arraysize;a++)
cout<<array[a]<<" ";
quicksort(array,0,arraysize-1);
cout<<"\n"<<"after quicksort: ";
for(int b=0;b<arraysize;b++)
cout<<array[b]<<" ";
return 0;
}
void quicksort(int a[],int start,int end)
{
int p=partition(a,start,end);
if(p>start)
{
quicksort(a,start,p-1);
}
if(p<end)
{
quicksort(a,p+1,end);
}
}
int partition(int b[],int i,int f)
{
for(int round=1;b[i]!=b[f];round++)
{
if(round%2==1)
{
for(;b[i]<b[f];f--)
;
int hold=b[i];
b[i]=b[f];
b[f]=hold;
}
if(round%2==0)
{
for(;b[i]<b[f];i++)
;
int hold=b[i];
b[i]=b[f];
b[f]=hold;
}
}
return i;
}
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 163.30.184.194