但是有不少的書本講得並不是很清楚,而且不同的教材的實現方式也不盡相同,
我這裡將最簡單的快速排序的思路寫出來供大家參考。
希望不管是用什麼語言都能從這個簡單的程式碼裡很方便的掌握快排思路與編寫方式
複製代碼代碼如下:
function quick_sort(list, start, end) {
if (start < end) {
var pivotpos = partition(list, start, end); //找出快排的基數
quick_sort(list, start, pivotpos - 1); //將左邊的快排一次
quick_sort(list, pivotpos + 1, end); //將右邊的快排一次
}
}
//將一個序列調整成以基數為分割的兩個區域,一邊全都不小於基數,一邊全都不大於基數
function partition(list, start, end) {
var pivotpos = start;
var pivot = list[start];
var tmp;
for(var i = start + 1; i <= end; i ++) {
if (list[i] < pivot) {
tmp = list[i];
pivotpos += 1;
list[i] = list[pivotpos];
list[pivotpos] = tmp;
}
}
tmp = list[start];
list[start] = list[pivotpos];
list[pivotpos] = tmp;
return pivotpos;
}
var list = [8,2,4,65,2,4,7,1,9,0,2,34,12];
quick_sort(list, 0, list.length);