摘要:用冒泡排序快速排序選擇排序冒泡排序冒泡排序是比較經典的排序方法,是一種用時間換空間的排序方法。找到并交換的時候,指針位置不變。選擇排序沒趟都會產生最小值,它不是相鄰元素的比較而是在該元素設置一個索引。選擇排序循環找到從開始到最后的最小的數
用js冒泡排序,快速排序,選擇排序 1.冒泡排序
冒泡排序是比較經典的排序方法,是一種用時間換空間的排序方法。我總結了一下它的特點:(1)它的時間復雜度是;(2)每一趟相鄰元素兩兩比較完畢就會產生最值(最大值);(3)每次比較完后下一趟就會少一個元素參與比較(即該趟比較的最大值)。
// 冒泡排序
function maopao(arr){ for(var i=0;i快速排序arr[j]){ temp = arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } return arr; } var arr = [1,9,3,7,2,8,3,99,44,1,6]; maopao(arr); console.log("冒泡排序"); console.log(arr);
// 2.快速排序
一趟快速排序的算法是:
1)設置兩個變量i、j,排序開始的時候:i=0,j=N-1;
2)以第一個數組元素作為關鍵數據,賦值給key,即 key=A[0];
3)從j開始向前搜索,即由后開始向前搜索(j=j-1即j--), 找到第一個小于key的值A[j],A[i]與A[j]交換;
4)從i開始向后搜索,即由前開始向后搜索(i=i+1即i++), 找到第一個大于key的A[i],A[i]與A[j]交換;
5)重復第3、4、5步,直到I=J; (3,4步是在程序中沒找到時候j=j-1,i=i+1,直至找到為止。 找到并交換的時候i, j指針位置不變。另外當i=j這過程一定正好是i+或j-完成的最后令循環結束)
function quickSort(arr){ // 如果數組長度小于等于1,直接返回 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;i3.選擇排序 選擇排序相比冒泡排序不穩定,時間復雜度也是。選擇排序沒趟都會產生最小值,它不是相鄰元素的比較而是在該元素設置一個索引i。然后與數組的其他元素依次比較(除了上一個索引值),直到找到小于該元素(索引j)時交換兩元素,接著繼續從i索引(此時已經不是原來的數值)值與索引j+1值比較。
// 選擇排序function selectSort(arr){ var minIndex; var temp; // 循環 for(var i=0;i
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/94708.html
摘要:冒泡排序冒泡排序算法的運作如下比較相鄰的元素。交換次數比冒泡排序少多了快速排序快速排序算法的運作如下找一個數,對數組進行掃描,小于這個數的放在這個數的左側,大于它的放在數組右側在對左右兩側的數組分別進行剛才的操作,直到數組長度為時結束。 1.冒泡排序 1.1 冒泡排序算法的運作如下: 1.比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 2.對每一對相鄰元素作同樣的工作,從開始第...
摘要:上一篇數據結構與算法樹寫在前面這是學習數據結構與算法的最后一篇博客,也是在面試中常常會被問到的一部分內容排序和搜索。 上一篇:JS數據結構與算法_樹 寫在前面 這是《學習JavaScript數據結構與算法》的最后一篇博客,也是在面試中常常會被問到的一部分內容:排序和搜索。在這篇博客之前,我每每看到排序頭就是大的,心里想著類似冒泡排序,兩層遍歷啪啪啪就完事了,然后再也無心去深入研究排序相...
摘要:本文對一些排序算法進行了簡單分析,并給出了的代碼實現。平均時間復雜度不好分析,它是冒泡排序是穩定的排序算法。冒泡排序是原地排序算法原地排序指的是空間復雜度是的排序算法。歸并排序,會將數組從中間分成左右兩部分。 本文對一些排序算法進行了簡單分析,并給出了 javascript 的代碼實現。因為本文包含了大量的排序算法,所以分析不會非常詳細,適合有對排序算法有一定了解的同學。本文內容其實不...
摘要:優化當待排序序列長度時,使用插入排序,可以加速排序。插入排序原理通過構建有序序列,對于未排序元素,在已排序序列中從后向前掃描,找到相應位置并插入。堆排序可通過樹形結構保存部分比較結果,可減少比較次數。 前端學習:教程&開發模塊化/規范化/工程化/優化&工具/調試&值得關注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:排序算法 JavaScript-排序算法及簡易優化 快速...
閱讀 1837·2021-09-23 11:21
閱讀 699·2019-08-30 15:55
閱讀 833·2019-08-29 15:40
閱讀 529·2019-08-29 12:56
閱讀 3158·2019-08-26 12:00
閱讀 3553·2019-08-23 18:24
閱讀 2247·2019-08-23 17:08
閱讀 1637·2019-08-23 17:03