1- const swap = require ( "../工具/交换" ) ;
1+ const swap = require ( "../工具/交换" )
22
33/**
44 *
55 * @param {number[] } arr
66 */
77function quickSort ( arr ) {
8- _quickSort ( arr , 0 , arr . length - 1 ) ;
9- return arr ;
8+ _quickSort ( arr , 0 , arr . length - 1 )
9+ return arr
1010}
1111
1212/**
@@ -17,11 +17,11 @@ function quickSort(arr) {
1717 */
1818function _quickSort ( arr , l , r ) {
1919 if ( l >= r ) {
20- return ;
20+ return
2121 }
22- let p = partition ( arr , l , r ) ;
23- _quickSort ( arr , l , p - 1 ) ;
24- _quickSort ( arr , p + 1 , r ) ;
22+ let p = partition ( arr , l , r )
23+ _quickSort ( arr , l , p - 1 )
24+ _quickSort ( arr , p + 1 , r )
2525}
2626
2727/**
@@ -31,24 +31,26 @@ function _quickSort(arr, l, r) {
3131 * @param {number } r 右边界
3232 * @returns {number } 返回索引值p,使得arr[l...p-1] < arr[p] < arr[p+1...r]
3333 */
34- function partition ( arr , l , r ) {
34+ function partition ( arr , left , right ) {
3535 // 取一个基准值 取第一项
36- let v = arr [ l ] ;
36+ let pivot = arr [ left ]
3737
38- // arr[l +1...j ] < v < arr[j +1...i) > v
39- let j = l ;
40- for ( let i = l + 1 ; i <= r ; i ++ ) {
38+ // arr[left +1...index ] < pivot, arr[index +1...i) > pivot
39+ let index = left
40+ for ( let i = left + 1 ; i <= right ; i ++ ) {
4141 let num = arr [ i ]
42- if ( num < v ) {
43- // 如果当前值小于基准值的话,就交换到j + 1后的位置去 。
44- // 扩充了j的范围 [j ...], v , [...r ]
45- swap ( arr , j + 1 , i ) ;
46- j ++ ;
42+ if ( num < pivot ) {
43+ // 如果当前值小于基准值的话,就交换到index + 1的位置去 。
44+ // 扩充了index的范围 [index ...], pivot , [...right ]
45+ swap ( arr , index + 1 , i )
46+ index ++
4747 }
4848 }
4949
50- swap ( arr , l , j ) ;
51- return j
50+ swap ( arr , left , index )
51+ return index
5252}
5353
54- console . log ( quickSort ( [ 1 , 4 , 2 , 5 , 3 ] ) ) ;
54+ quickSort . sortName = "快速排序"
55+
56+ module . exports = quickSort
0 commit comments