1.先從數列中取出一個數作為基準數,
2.磁區程序,將比這個數大的數全放到它的右邊,小于或等于它的數全放到它的左邊,
3.再對左右區間重復第二步,直到各區間只有一個數,
時間復雜度:O(N*logN);
代碼:
1 void quick_sort(int s[], int l, int r) 2 3 { 4 5 if (l < r) 6 7 { 8 9 int i = l, j = r, x = s[l]; 10 11 while (i < j) 12 13 { 14 15 while(i < j && s[j] >= x) // 從右向左找第一個小于x的數 16 17 j--; 18 19 if(i < j) 20 21 s[i++] = s[j]; // 進行替換 22 23 24 25 while(i < j && s[i] < x) // 從左向右找第一個大于等于x的數 26 27 i++; 28 29 if(i < j) 30 31 s[j--] = s[i]; 32 33 } 34 35 s[i] = x; // 剩余的位置即為x 36 37 quick_sort(s, l, i - 1); // 遞回呼叫 38 39 quick_sort(s, i + 1, r); 40 41 } 42 43 }View Code
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/208271.html
標籤:C
上一篇:Android權限大全
