1 function quickSort(array, left, right) { 2 // 当没有给出left,right参数时,为默认值 3 var left = left || 0, 4 right = right || array.length - 1; 5 if (left >= right) { 6 return array; 7 } 8 // 索引值,每次为数组的第一个元素 9 var index = array[left];10 // 设置哨兵i和j11 var i = left,12 j = right;13 // 当两个哨兵未相遇时,进行后续处理14 while (i != j) {15 // 先让哨兵j开始向左跑动,直到找到比索引值小的数16 while (array[j] >= index && i < j) {17 j--;18 }19 // 再让哨兵i向右跑动,直到找到比索引值大的数20 while (array[i] <= index && i < j) {21 i++;22 }23 // 当哨兵i还在哨兵j左边时,将其进行交换24 if (i < j) {25 var t = array[i];26 array[i] = array[j];27 array[j] = t;28 }29 }30 // 当哨兵i和j相遇时,将索引值和哨兵进行交换31 array[left] = array[i];32 array[i] = index;33 // 递归调用,再去处理索引值左边部分和右边部分34 return quickSort(array, left, i - 1);35 return quickSort(array, i + 1, right);36 }
这几天琢磨了下算法,好久没搞这东西感觉自己编程能力都退化了,就又拿出来练练了,以前都是用c去写的,现在学js就想着拿这个来实现了下。