快速排序算法思路:
先拿一个数(这里取a[0])将这个数组分成两堆,一堆大于这个数,另一堆相反,然后这个数就放到了他该放的位置上面(相当于这个数就拍好序)。以此类推,左边的继续重复上面的操作,右边也是。这是不是就是递归的思想了。
/*进来一个数组,参考第一个a[low],将数组分成两堆,返回最后这个a[low]该放到的下标*/
int wei::Chen::partition(int arr[], int low, int high){
int temp = arr[low];
while ( low<high ) {
while ( (low<high)&&(arr[high]>temp) ) {
--high;
}
swap( arr[low] ,arr[high] );
while ( (low<high)&&(arr[low]<temp) ) {
++low;
}
swap( arr[low] , arr[high] );
}
arr[low] = temp;
return low;
}
/*将上面的下标返回后,左边递归,右边递归,直到条件不满足位置,排序就好了*/
void wei::Chen::quickSort(int arr[], int low , int high ) {
if ( low<high ) {
int opz = partition( arr , low , high );
quickSort( arr , low , opz-1);
quickSort( arr , opz+1 , high );
}
}