1. 快速排序算法的“笼统”说法:
找一个基准值,比这个值大的放在右边,比这个值小的放在左边,然后循环递归,直到完成整个排序。
2. 示意图:
3. 具体代码:
1 #include <stdio.h> 2 3 void quick_sort(int arr[],int arr_start,int arr_end) 4 { 5 if(arr_start < arr_end) 6 { 7 int left = arr_start; 8 int right = arr_end; 9 int compData = arr[left]; 10 11 while(left < right) 12 { 13 //form right to left 14 while(left < right && arr[right] > compData) right--; 15 if(left < right) 16 { 17 arr[left] = arr[right]; 18 left ++; 19 } 20 21 while(left < right && arr[left] < compData) left++; 22 if(left < right) 23 { 24 arr[right] = arr[left]; 25 right --; 26 } 27 28 arr[left] = compData; 29 quick_sort(arr,arr_start,left-1); 30 quick_sort(arr,left+1,arr_end); 31 32 } 33 34 } 35 } 36 37 int main(int argc,char const *argv[]) 38 { 39 int arr[] = {58,30,20,50,42,55,69}; 40 int arr_length = sizeof(arr)/sizeof(int); 41 quick_sort(arr,0,arr_length-1); 42 for(int i = 0;i<arr_length;i++) 43 { 44 printf("%d ",arr[i]); 45 } 46 47 printf(" "); 48 }
4. 结果: