js實現快速排序

2021-08-19 21:56:37 字數 693 閱讀 3827

快速排序主要用到的是遞迴和分治的思想當資料量比較大時,快排無疑是最好的選擇。

對於公升序來講,大體思路是,首先我們定義左邊指標為i,最右邊為j,然後選最左邊的數字作為參照,然後從右邊往左邊搜尋,直到找到比參照數小的,然後將這個數字賦給i指標所在位置,再從左往右搜尋直到找到比參照大的,然後將這個數賦給j指標所在位置,這樣交替執行,知道i,j指標相遇,此時,再把參照數賦給i所在位置,這個時候i,j所在位置就是最開始我們選的參照數的位置,它的左邊全部小於它,右邊全部大於它,再利用分治的思想,遞迴左邊和右邊。

var nums = [1, 0, 1]

function quicksort (nums, left, right)

while (i != j)

if (i < j)

while (i < j && nums[i] <= temp)

if (i < j)

} nums[i] = temp

quicksort(nums, left, i - 1)

quicksort(nums, i + 1, right)

}quicksort(nums, 0, nums.length - 1)

需要注意的是,在js中有的小夥伴可能會擔心函式裡面訪問的nums是全域性的,但是這裡是用的我們傳進來的nums,而且這裡是傳遞的引用不懂的可以去看我js裡面的作用域鏈文章。

js實現快速排序

快排思想 1 在資料集之中,選擇乙個元素作為 基準 pivot 2 所有小於 基準 的元素,都移到 基準 的左邊 所有大於 基準 的元素,都移到 基準 的右邊。var quicksort function arr var pivotindex math.floor arr.length 2 var ...

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 第...