JavaScript實現標準快速排序
快速排序是分治策略的經典實現,分治的策略如下:
-
分解(Divide)步驟:將問題劃分未一些子問題,子問題的形式與原問題一樣,只是規模更小
-
解決(Conquer)步驟:遞迴地求解出子問題。如果子問題的規模足夠小,則停止遞迴,直接求解
-
合併(Combine)步驟:將子問題的解組合成原問題的解
快速排序函式,我們需要將排序問題劃分為一些子問題進行排序,然後通過遞迴求解,我們的終止條件就是,當array.length > 1不再生效時返回陣列
function quickSort(array) { return quick(array, 0, array.length - 1); }; function quick(array, left, right) { let index; if (array.length > 1) { index = partition(array, left, right); if (left < index - 1) { quick(array, left, index - 1); } if (index < right) { quick(array, index, right); } } return array; } // 劃分操作函式 function partition(array, left, right) { // 利用index取中間值可以大大降低演算法的時間複雜度 const pivot = array[Math.floor((right + left) / 2)]; let i = left; let j = right; while (i <= j) { while (compare(array[i], pivot) === -1) { i++; } while (compare(array[j], pivot) === 1) { j--; } if (i <= j) { swap(array, i, j); i++; j--; } } return i; } // 比較函式 function compare(a, b) { if (a === b) { return 0; } return a < b ? -1 : 1; }
相關文章
- javascript 快速排序JavaScript排序
- 快速排序javaScript排序JavaScript
- java實現快速排序Java排序
- Swift實現快速排序Swift排序
- GO 實現快速排序Go排序
- 快速排序(java實現)排序Java
- 快速排序 java實現排序Java
- php實現 歸併排序,快速排序PHP排序
- 快速排序三種實現排序
- Python實現的快速排序Python排序
- JavaScript實現:插入排序!!!JavaScript排序
- Go實現氣泡排序和快速排序Go排序
- 學員優秀博文賞析:雙基準快速排序實現排序
- 排序演算法之快速排序的實現排序演算法
- Python3實現快速排序Python排序
- 用JavaScript實現插入排序JavaScript排序
- 快速排序的四種python實現排序Python
- JavaScript實現常用排序演算法JavaScript排序演算法
- Sort排序專題(5)快速排序(QuickSort)(C++實現)排序UIC++
- 排序演算法-Java實現快速排序演算法排序演算法Java
- JavaScript快速排序功能詳解JavaScript排序
- python實現氣泡排序、插入排序以及快速排序演算法Python排序演算法
- 隨機快速排序Java程式碼實現隨機排序Java
- 快速排序演算法C++實現排序演算法C++
- JavaScript實現經典排序演算法JavaScript排序演算法
- 歸併排序與快速排序的一個實現與理解排序
- C++快速排序與歸併排序的實現(LeetCode 912)C++排序LeetCode
- 七、排序,選擇、冒泡、希爾、歸併、快速排序實現排序
- 直播系統原始碼,實現快速排序和歸併排序原始碼排序
- 排序策略 - Swift標準庫原始碼排序Swift原始碼
- ECMA標準ECMAScript(JavaScript的一個標準)和C#JavaScriptC#
- 快速排序的三種實現方法 (C++)排序C++
- 使用javascript實現排序二叉樹(2)JavaScript排序二叉樹
- 使用javascript實現排序二叉樹(1)JavaScript排序二叉樹
- 九種排序演算法的 JavaScript 實現排序演算法JavaScript
- JavaScript實現的7種排序演算法JavaScript排序演算法
- 搞定JavaScript演算法系列--快速排序JavaScript演算法排序
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴