- 快排就是根据一个基准值分区,比基准值大的放在右边,小的放在左边(从小到大排序)
- 将左右两个区域的数据,重复1步骤
js代码:
1 //取第一个为基准值 2 fastSort(arr, left, right) { 3 if (left >= right) { 4 return; 5 } 6 let i = left, j = right, val = arr[i];//val 为基准值 7 //while循环,将比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; //当i == j时, 基准值赋予i 25 //左边分区 26 this.fastSort(arr, left, i -1); 27 //右边分区 28 this.fastSort(arr, i + 1, right); 29 },