-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathSort_Quick.js
More file actions
50 lines (45 loc) · 1.42 KB
/
Sort_Quick.js
File metadata and controls
50 lines (45 loc) · 1.42 KB
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
42
43
44
45
46
47
48
49
50
/**
* Quick sort algorithm.
*/
var processText ='';
var processCount = 0;
function quickSort(arr, left, right) {
var i = left;
var j = right;
var swapl, swapr;
pivotidx = (left + right) / 2;
var pivotval = parseInt(arr[pivotidx.toFixed()]);
processText += '<br /> ' + arr +' / left : right => '+left +' : '+ right+' / pivot : ' + pivotval + '<br />';
/* partition */
while (i <= j) {
while (parseInt(arr[i]) < pivotval)
i++;
while (parseInt(arr[j]) > pivotval)
j--;
if (i <= j) { // swap
swapl = arr[i];
swapr = arr[j];
arr[i] = swapr;
arr[j] = swapl;
i++;
j--;
processText += '<br /> step '+(processCount++)+' - swap l, r : ' + swapl + ' ... ' + swapr + ' / new array => ' + arr + '<br />';
}
}
/* recursion */
if (left < j){
quickSort(arr, left, j);
}
if (i < right){
quickSort(arr, i, right);
}
return arr;
}
window.onload = function(){
var inputarray = [3, 2, 11,5,6,7,8,9,1,4,10 ];
var resultText = 'input Array : '+ inputarray;
var resultarray = quickSort(inputarray, 0, inputarray.length -1);
resultText += '<br /> sorted Array : '+ resultarray;
processText = '<br /> process : <br />' + processText;
document.getElementById('result').innerHTML = resultText + processText;
};