-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsort-quick.js
More file actions
37 lines (37 loc) · 918 Bytes
/
Copy pathsort-quick.js
File metadata and controls
37 lines (37 loc) · 918 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function quickSort (array , p , r){
if(p == undefined){
p = 0 ;
}
if(r == undefined){
r = array.length - 1 ;
}
if (p >= r){
return array ;
}
var pivot = array[r];
var lessThanPivot = [];
var greaterThanPivot = [];
for(var i = p ; i < r ; i++){
if(array[i] <= pivot){
lessThanPivot.push(array[i]) ;
}else{
greaterThanPivot.push(array[i]) ;
}
}
var lowPart = quickSort(lessThanPivot , 0 , lessThanPivot.length - 1);
var highPart = quickSort(greaterThanPivot , 0 , greaterThanPivot.length - 1);
return fuse(lowPart,pivot,highPart);
}
function fuse (low, pivot, high){
var array = [pivot];
for(var i = low.length - 1 ; i >= 0 ; i--){
array.unshift(low[i]);
}
for(var j = 0 ; j < high.length ; j++){
array.push(high[j]);
}
return array ;
}
var test = [4,5,6,0,8,5,8,7,0,-5.5,-4,7.5,8,11,197,87];
test = quickSort(test);
console.log(test);