js實現快速排序

2021-07-22 15:59:30 字數 581 閱讀 3041

快排思想

(1)在資料集之中,選擇乙個元素作為"基準"(pivot)。

(2)所有小於"基準"的元素,都移到"基準"的左邊;所有大於"基準"的元素,都移到"基準"的右邊。

var quicksort = function(arr) 

var pivotindex = math.floor(arr.length / 2);

var pivot = arr.splice(pivotindex, 1)[0];//設定基準的值,不能去掉[0],因為去掉就是陣列了

console.log(pivot);

var left = ;

var right = ;

for (var i = 0; i < arr.length; i++) else

}return quicksort(left).concat([pivot], quicksort(right));

};console.log(quicksort([1,24,3,4,5]));

(3)對"基準"左邊和右邊的兩個子集,不斷重複第一步和第二步,直到所有子集只剩下乙個元素為止。

js實現快速排序

快速排序主要用到的是遞迴和分治的思想當資料量比較大時,快排無疑是最好的選擇。對於公升序來講,大體思路是,首先我們定義左邊指標為i,最右邊為j,然後選最左邊的數字作為參照,然後從右邊往左邊搜尋,直到找到比參照數小的,然後將這個數字賦給i指標所在位置,再從左往右搜尋直到找到比參照大的,然後將這個數賦給j...

js實現快速排序

var quicksort function arr var pivotindex math.floor arr.length 2 取基準點 var pivot arr.splice pivotindex,1 0 取基準點的值,splice index,1 函式可以返回陣列中被刪除的那個數 var ...

快速排序js實現

書中先講了乙個小案例,如果將一塊長方形土地均勻分成方塊,且分出的方塊要盡可能大 兩個要點 案例分析 基線條件 一條邊是另一條邊的整數倍 遞迴條件 長邊整除短邊劃出區域,剩餘區域繼續呼叫基線條件和遞迴條件 答案 1680 640的土地,按短邊整數倍長分出2640640的區域,剩餘區域為640400 第...