快速排序主要采用了一个分割的思想,通过某一个元素将序列分为两个部分,然后对左右两个部分再次进行快排。
int partition(int a[],int left,int right){
int temp=a[left];
while(left<right){
while(left<right&&a[right]>temp) right--;
a[left]=a[right];
while(left<right&&a[left]<temp) left++;
a[right]=a[left];
}
a[left]=temp;
return left;
}
void quicksort(int a[],int left,int right){
if(left<right){
int pos=partition(a,left,right);
quicksort(a,left,pos-1);
quicksort(a,pos+1,right);
}
}
快速排序也可以用于找到数组中第k大(小)的的元素。