quickSort by javascript

 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和j
11             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就想着拿这个来实现了下。

原文地址:https://www.cnblogs.com/luxueping/p/5732193.html