File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change 1+ const swap = require ( "../工具/交换" ) ;
2+
3+ /**
4+ *
5+ * @param {number[] } arr
6+ */
7+ function quickSort ( arr ) {
8+ _quickSort ( arr , 0 , n - 1 ) ;
9+ }
10+
11+ /**
12+ * 对 arr[l...r] 部分进行快速排序
13+ * @param {number[] } arr
14+ * @param {number } l 左边界
15+ * @param {number } r 右边界
16+ */
17+ function _quickSort ( arr , l , r ) {
18+ if ( l >= r ) {
19+ return ;
20+ }
21+ let p = partition ( arr , l , r ) ;
22+ __quickSort ( arr , l , p - 1 ) ;
23+ __quickSort ( arr , p + 1 , r ) ;
24+ }
25+
26+ /**
27+ * 对 arr[l...r] 部分进行快速排序
28+ * @param {number[] } arr
29+ * @param {number } l 左边界
30+ * @param {number } r 右边界
31+ * @returns {number } 返回索引值p,使得arr[l...p-1] < arr[p] < arr[p+1...r]
32+ */
33+ function partition ( arr , l , r ) {
34+ // 取一个基准值 取第一项
35+ let v = arr [ l ] ;
36+
37+ // arr[l+1...j] < v; arr[j+1...i) > v
38+ let j = l ;
39+ for ( let i = l + 1 ; i <= r ; i ++ ) {
40+ if ( arr [ i ] < v ) {
41+ // 如果当前值小于基准值的话,就交换到j + 1后的位置去。
42+ swap ( arr , j + 1 , i ) ;
43+ j ++ ;
44+ }
45+ }
46+ }
You can’t perform that action at this time.
0 commit comments