交換排序---快速排序
阿新 • • 發佈:2018-11-19
將需要排序的陣列,定義一個標準數字,和一個開始位置(下標),和一個最後位置 (下標) (標準數字是開始位置的數字) (6,8,2,9,4,12,1)
先在最後位置開始,把最後位置的數字和標準數字比較,如果最後位置的數字比標準數字大,則將最後位置向前移動一位
如果最後位置的數字比標準數字小,則將最後位置的數字賦給開始位置的數字,依次比較,先將陣列排成 (1,4,2,6,8,9,12)
下面將(1,4,2,6,8,9,12)分成兩個陣列(1,4,2,6)和(8,9,12)
再將(1,4,2,6)陣列和(8,9,12)陣列進行依次遞迴
1//把陣列中的第0個數組作為標準數 2 int stard=arr[start]; 3 //記錄需要排序的下標 4 int low=start; 5 int high=end; 6 //迴圈找比標準數大的數和比標準數小的數 7 while(low<high){ 8 //右邊的數字比標準數大 9 while(low<high&&stard<=arr[high]){ 10 high--;11 } 12 //右邊的數字比標準數小,使用右邊的數字替換左邊的數 13 arr[low]=arr[high]; 14 //如果左邊的數字比標準數小 15 while(low<high&&arr[low]<=stard){ 16 low++; 17 } 18 //如果 19 arr[high]=arr[low]; 20 } 21 //把標準資料給低所在的位置 22 arr[low]=stard; 23 //處理所有的小的數字 24 quickSort(arr,start,low); 25 //處理所有的大的數字 26 quickSort(arr,low+1,end);