思路
快速排序是分治策略的排序算法,思想是确定一个值,然后将比这个值大的放到它右边,比它小的放到它左边,然后再对两边进行这样的递归操作。
代码步骤
快速排序有三步:
- 找中轴
- 左边快排
- 右边快排
其中最难的是找中轴,找中轴也有三步:
1.给定中轴的值(left)
2.从左往右找,将右边的值赋给左边
3.从右往左找,将左边的值赋给右边
代码
void quickSort(int* arr,int left,int right){
int index=find_index(arr,left,right);
quickSort(arr,left,index-1);
quickSort(arr,index+1,right);
}
int find_index(int* arr,int left,int right){
int pivot=arr[left];
while(left<right){
while(left<right&&arr[right]>pivot){right--;}
arr[left]=arr[right];
while(left<right&&arr[left]<pivot){left++:}
arr[right]=arr[left];
}
arr[left]=pivot;
return left;
}