- 快排就是根據(jù)一個基準(zhǔn)值分區(qū),比基準(zhǔn)值大的放在右邊,小的放在左邊(從小到大排序)
- 將左右兩個區(qū)域的數(shù)據(jù),重復(fù)1步驟
js代碼:
1 //取第一個為基準(zhǔn)值 2 fastSort(arr, left, right) { 3 if (left >= right) { 4 return; 5 } 6 let i = left, j = right, val = arr[i];//val 為基準(zhǔn)值 7 //while循環(huán),將比val小的放在左邊,比val大的放在右邊 8 while( i < j ) { 9 //從后找,第一個比val小的值, 填充i 10 while ( i < j && arr[j] >= val) { 11 j--; 12 } 13 if ( i < j ) { 14 arr[i++] = arr[j]; 15 } 16 //從前找,第一個比val大的值, 填充j 17 while ( i < j && arr[i] < val ) { 18 i++; 19 } 20 if ( i < j ) { 21 arr[j--] = arr[i]; 22 } 23 } 24 arr[i] = val; //當(dāng)i == j時, 基準(zhǔn)值賦予i 25 //左邊分區(qū) 26 this.fastSort(arr, left, i -1); 27 //右邊分區(qū) 28 this.fastSort(arr, i + 1, right); 29 },
浙公網(wǎng)安備 33010602011771號