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; }
相關文章
- 快速排序(Quicksort)的Javascript實現排序UIJavaScript
- 快速排序javaScript排序JavaScript
- javascript 快速排序JavaScript排序
- GO 實現快速排序Go排序
- 快速排序 java實現排序Java
- Swift實現快速排序Swift排序
- java實現快速排序Java排序
- 快速排序(java實現)排序Java
- 快速排序的實現排序
- php實現 歸併排序,快速排序PHP排序
- 快速排序三種實現排序
- python實現快速排序Python排序
- Go實現氣泡排序和快速排序Go排序
- 學員優秀博文賞析:雙基準快速排序實現排序
- JavaScript實現:插入排序!!!JavaScript排序
- Python實現的快速排序Python排序
- 排序演算法之快速排序的實現排序演算法
- javascript 陣列快速排序JavaScript陣列排序
- 用JavaScript實現插入排序JavaScript排序
- python排序演算法的實現-快速排序Python排序演算法
- Python3實現快速排序Python排序
- 快速排序(quicksort)演算法實現排序UI演算法
- 排序演算法-Java實現快速排序演算法排序演算法Java
- Sort排序專題(5)快速排序(QuickSort)(C++實現)排序UIC++
- 七、排序,選擇、冒泡、希爾、歸併、快速排序實現排序
- JavaScript實現常用排序演算法JavaScript排序演算法
- 快速排序演算法C++實現排序演算法C++
- 快速排序的四種python實現排序Python
- 隨機快速排序Java程式碼實現隨機排序Java
- OC實現選擇、插入和快速排序排序
- bash shell 實現快速排序演算法排序演算法
- js實現兩種實用的排序演算法——冒泡、快速排序JS排序演算法
- JavaScript快速排序功能詳解JavaScript排序
- 直播系統原始碼,實現快速排序和歸併排序原始碼排序
- 歸併排序與快速排序的一個實現與理解排序
- 排序策略 - Swift標準庫原始碼排序Swift原始碼
- python實現氣泡排序、插入排序以及快速排序演算法Python排序演算法
- JavaScript實現經典排序演算法JavaScript排序演算法