-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathquick_sort.js
More file actions
35 lines (31 loc) · 831 Bytes
/
quick_sort.js
File metadata and controls
35 lines (31 loc) · 831 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
function quick_sort(demo_arr)
{
$("#title").html("Quick Sort");
do_sort(demo_arr);
function do_sort(demo_arr)
{
sort(demo_arr, 0, demo_arr.length-1);
}
function sort(arr, lo, hi) {
if (hi <= lo) return;
var j = partition(arr, lo, hi);
sort(arr, lo, j-1);
sort(arr, j+1, hi);
}
function partition(arr, lo, hi) {
var i = lo;
var j = hi+1;
while (true) {
//while (arr.compare(++i, lo) == lo)
while (arr.at(++i) < arr.at(lo))
if (i == hi) break;
//while (arr.compare(--j, lo) == j)
while (arr.at(lo) < arr.at(--j))
if (j == lo) break;
if (i >= j) break;
arr.swap(i, j);
}
arr.swap(lo, j);
return j;
}
}