-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsort
43 lines (32 loc) · 834 Bytes
/
sort
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
38
39
40
41
//Quick sort
//Time Complexity
function quickSort(arr) {
if(arr.length < 2) {return arr;}
var middleIndex = Math.floor(arr.length/2);
var left = [];
var right = [];
for(var k=0; k<arr.length; k++){
if(arr[k] <= arr[middleIndex]) { left.push(arr[k]);}
else if(arr[middleIndex] <arr[k]) { right.push(arr[k]);}
}
var _left = quickSort(left);
var _right = quickSort(right);
return _left.concat(_right);
}
// from online:
function quickSort(a) {
if (a.length <= 1) return a;
var mid = ~~(a.length / 2)
, midItem = a.splice(mid, 1)[0]
, left = []
, right = [];
a.forEach(function(item) {
if (item <= midItem)
left.push(item);
else
right.push(item);
});
var _left = quickSort(left)
, _right = quickSort(right);
return _left.concat(midItem, _right);
}