1、基于partition函数的快速排序
<span style="font-size:18px;">int partition(int *data, int start, int end){
if(data == NULL || start > end){
return -1;
}
int index = data[start];
int i = start,j = end;
while(i < j){
while(i<j && data[j] >= index)
j--;
if(i<j)
data[i++] = data[j];
while(i<j && data[i] < index)
i++;
if(i<j)
data[j--] = data[i];
}
data[i] = index;
return j;
}
void quickSort(int *data,int start,int end){
if(data == NULL)
return ;
if(start < end){
int p = partition(data,start,end);
quickSort(data,start,p-1);
quickSort(data, p+1, end);
}
}
int main (int argc, char* argv[])
{
int data[] = {6,2,4,3,5,1,7,6,8,9};
int length = sizeof(data)/sizeof(int);
quickSort(data,0,length -1);
for(int i = 0; i<length;i++)
cout<<data[i]<<' ';
cout<<endl;
system("pause");
return 0;
}</span>
2、直接的快速排序
<span style="font-size:18px;">void quickSort(int *data,int start,int end){
if(data == NULL || start > end){
return ;
}
int index = data[start];
int i = start,j = end;
while(i < j){
while(i<j && data[j] >= index)
j--;
if(i<j)
data[i++] = data[j];
while(i<j && data[i] < index)
i++;
if(i<j)
data[j--] = data[i];
}
data[i] = index;
quickSort(data,start,i-1);
quickSort(data, i+1, end);
}</span>