摘要:快速排序快速排序使用分治法把一個(gè)串分為兩個(gè)子串。成為分區(qū)操作遞歸的把小于基準(zhǔn)值元素的子數(shù)列和大于基準(zhǔn)值元素的子數(shù)列排序
// 快速排序
// 快速排序使用分治法把一個(gè)串(list)分為兩個(gè)子串(sub-lists)。具體算法實(shí)現(xiàn)
// 1.從數(shù)組中挑出一個(gè)元素,成為基準(zhǔn)
// 2.重新排列數(shù)組,所有元素比基準(zhǔn)值小的擺放在基準(zhǔn)前面,所有元素比基準(zhǔn)大的擺在基準(zhǔn)后面(相同的可以任意一邊
// 這個(gè)分區(qū)退出之后,該基準(zhǔn)就處于數(shù)列的中間位置。成為分區(qū)操作
// 3.遞歸的把小于基準(zhǔn)值元素的子數(shù)列和大于基準(zhǔn)值元素的子數(shù)列排序
var quickSort = function(arr) {
if (arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++){
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
};
const arr = [91, 60, 96, 7, 35, 65];
console.log(quickSort(arr));
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/101338.html
摘要:快速排序英語,又稱劃分交換排序,簡稱快排,一種排序算法,最早由東尼霍爾提出。 快速排序(英語:Quicksort),又稱劃分交換排序(partition-exchange sort),簡稱快排,一種排序算法,最早由東尼·霍爾提出。在平均狀況下,排序n個(gè)項(xiàng)目要O(nLogn)次比較。在最壞狀況下則需要O(n^2)次比較,但這種狀況并不常見。事實(shí)上,快速排序O(nLogn)通常明顯比其他算...
摘要:快速排序是一種劃分交換排序。快速排序基于冒泡遞歸分治。他在大數(shù)據(jù)情況下是最快的排序算法之一,平均事件復(fù)雜度很低而且前面的系數(shù)很小,在大量隨機(jī)輸入的情況下最壞情況出現(xiàn)的概率是極小的。 快速排序是一種劃分交換排序。它采用了一種分治的策略,通常稱其為分治法。 分治法的基本思想是:將原問題分解為若干個(gè)規(guī)模更小但結(jié)構(gòu)與原問題相似的子問題。遞歸地解這些子問題,然后將這些子問題的解組合為原問題的解。...
摘要:用冒泡排序快速排序選擇排序冒泡排序冒泡排序是比較經(jīng)典的排序方法,是一種用時(shí)間換空間的排序方法。找到并交換的時(shí)候,指針位置不變。選擇排序沒趟都會(huì)產(chǎn)生最小值,它不是相鄰元素的比較而是在該元素設(shè)置一個(gè)索引。選擇排序循環(huán)找到從開始到最后的最小的數(shù) 用js冒泡排序,快速排序,選擇排序 1.冒泡排序 冒泡排序是比較經(jīng)典的排序方法,是一種用時(shí)間換空間的排序方法。我總結(jié)了一下它的特點(diǎn):(1)它的時(shí)間復(fù)...
摘要:所有關(guān)鍵字比該記錄關(guān)鍵字小的記錄放置在前一部分,所有比它大的記錄放置在后一部分,并把改記錄排在這兩部分的中間稱為該記錄歸位,這個(gè)過程稱作一次快速排序。代碼如下大佬的代碼還是比較厲害的,簡單易懂,佩服以上就是相關(guān)的快速排序的實(shí)現(xiàn)方法 由于自己不是計(jì)算機(jī)專業(yè),數(shù)據(jù)結(jié)構(gòu)沒有太多研究,曾經(jīng)面試時(shí)有被問過關(guān)于快速排序以及冒泡排序的寫法,冒泡排序比較簡單,當(dāng)時(shí)能回答出來,但是快速排序當(dāng)時(shí)就比較懵逼...
摘要:優(yōu)化當(dāng)待排序序列長度時(shí),使用插入排序,可以加速排序。插入排序原理通過構(gòu)建有序序列,對(duì)于未排序元素,在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。堆排序可通過樹形結(jié)構(gòu)保存部分比較結(jié)果,可減少比較次數(shù)。 前端學(xué)習(xí):教程&開發(fā)模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關(guān)注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:排序算法 JavaScript-排序算法及簡易優(yōu)化 快速...
摘要:公共函數(shù)庫用于取出隨機(jī)排列的數(shù)字原數(shù)組給原數(shù)組賦值排序算法插入排序時(shí)間復(fù)雜度二分法插入排序選擇排序快速排序一堆排序測試用例插入排序時(shí)間測試二分法插入排序時(shí)間測試選擇排序時(shí)間測試快速排序時(shí)間測試一堆 公共函數(shù)庫(用于取出隨機(jī)排列的數(shù)字) module.exports={ randomIntegerArray:function(count){ var origina...
閱讀 3325·2021-11-25 09:43
閱讀 1311·2021-11-23 09:51
閱讀 3616·2021-10-11 11:06
閱讀 3714·2021-08-31 09:41
閱讀 3604·2019-08-30 15:53
閱讀 3513·2019-08-30 15:53
閱讀 972·2019-08-30 15:43
閱讀 3313·2019-08-29 14:02