-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathquick_sort.js
More file actions
40 lines (36 loc) Β· 990 Bytes
/
quick_sort.js
File metadata and controls
40 lines (36 loc) Β· 990 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
38
39
40
// Hazrat Ali
// University Of Scholars
function quickSort(arr, left, right) {
let len = arr.length,
pivot,
partitionIndex;
// Quick Sort
if (left < right) {
pivot = right;
partitionIndex = partition(arr, pivot, left, right);
//sort left and right
quickSort(arr, left, partitionIndex - 1);
quickSort(arr, partitionIndex + 1, right);
}
return arr;
}
function partition(arr, pivot, left, right) {
let pivotValue = arr[pivot],
partitionIndex = left;
for (let i = left; i < right; i++) {
if (arr[i] < pivotValue) {
swap(arr, i, partitionIndex);
partitionIndex++;
}
}
swap(arr, right, partitionIndex);
return partitionIndex;
}
function swap(arr, i, j) {
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
console.log(quickSort([7, 5, 2, 4, 3, 9]));
console.log(quickSort([9, 7, 5, 4, 3, 1]));
console.log(quickSort([1, 2, 3, 4, 5, 6]));