亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

JavaScript中幾種排序算法的簡單實現

2024-05-06 16:23:58
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了JavaScript中幾種排序算法的簡單實現,排序是各種編程語言學習中都是共通的必會的基礎,需要的朋友可以參考下

排序算法的實現

我的JS水平就是渣渣,所以我就用類似于JAVA和C的方式來寫JavaScript的排序算法了。

而且這里我不講算法原理,僅僅只是代碼實現,可能會有Bug,歡迎大家博客評論指導。

插入排序

插入排序(Insertion-Sort)的算法描述是一種簡單直觀的排序算法。它的工作原理是通過構建有序序列,對于未排序數據,在已排序序列中從后向前掃描,找到相應位置并插入。插入排序在實現上,通常采用in-place排序(即只需用到O(1)的額外空間的排序),因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。

實現代碼如下:

 

 
  1. function insertSort(arr) { 
  2. if (!arr) return
  3. var len = arr.length; 
  4. if (len == 0 || len == 1) return
  5.  
  6. for (var i = 1, len = arr.length; i < len; i ++) { 
  7. var stand = arr[i]; 
  8. for (var j = i - 1; j >= 0; j --) { 
  9. if (arr[j] > stand) { 
  10. arr[j + 1] = arr[j]; 
  11. else { 
  12. arr[j + 1] = stand; 
  13. break
  14.  
  15. return arr; 

時間復雜度為:O(n^2)

當然,該算法是有優化余地的,例如將搜索替換的位置算法改為二分查找。

冒泡排序

經典的排序算法,提到冒泡排序我就心痛。本科時候的必須論文的冒泡排序算法的改進,結果寫完論文之后都不能完整的實現冒泡排序算法,好尷尬。

 

 
  1. if (!arr) return
  2. var len = arr.length; 
  3. if (len == 0 || len == 1) return
  4.  
  5. for (var i = 0; i < len; i ++) { 
  6. for (var j = 0; j < len - i - 1; j ++) { 
  7. if (arr[j] > arr[j + 1]) { 
  8. var tmp = arr[j + 1]; 
  9. arr[j + 1] = arr[j]; 
  10. arr[j] = tmp; 
  11.  
  12. return arr; 

時間復雜度為:O(n^2)

快速排序

非常經典的排序算法,排序過程主要i分為三步:

從數列中挑出一個元素,稱為 “基準”(pivot);

重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的后面(相同的數可以到任一邊)。在這個分區退出之后,該基準就處于數列的中間位置。這個稱為分區(partition)操作;

遞歸地(recursive)把小于基準值元素的子數列和大于基準值元素的子數列排序。

實現代碼如下:

 

 
  1. function quickSort(arr, bt, ed) { 
  2. if (bt < ed) { 
  3. var pivot = findPartition(arr, bt, ed); 
  4. quickSort(arr, bt, pivot - 1); 
  5. quickSort(arr, pivot + 1, ed); 
  6.  
  7. function findPartition(arr, bt, ed) { 
  8. var stand = arr[bt]; 
  9.  
  10. while (bt < ed) { 
  11. while (bt < ed && arr[ed] >= stand) { 
  12. ed --; 
  13. if (bt < ed) { 
  14. arr[bt ++] = arr[ed]; 
  15. while (bt < ed && arr[bt] <= stand) { 
  16. bt ++; 
  17. if (bt < ed) { 
  18. arr[ed --] = arr[bt];  
  19.  
  20. arr[bt] = stand; 
  21. return bt; 

時間復雜度為:O(nlogn)。

歸并排序

也是非常經典的排序算法,我就是借著學習js的機會復習經典的排序算法了。歸并排序的思想可以參考我的這篇博客:歸并排序。我這里只寫js實現。

 

 
  1. function mergeSort(arr, bt, ed) { 
  2. if (bt < ed) { 
  3. var mid = bt + parseInt((ed - bt) / 2); 
  4. mergeSort(arr, bt, mid); 
  5. mergeSort(arr, mid + 1, ed); 
  6. mergeArray(arr, bt, mid, ed);  
  7.  
  8. function mergeArray(arr, bt, mid, ed) { 
  9. var mArr = []; 
  10. var i = bt, j = mid + 1; 
  11. while (i <= mid && j <= ed) { 
  12. if (arr[i] <= arr[j]) { 
  13. mArr.push(arr[i++]); 
  14. else { 
  15. mArr.push(arr[j ++]); 
  16.  
  17. if (i <= mid) { 
  18. mArr = mArr.concat(arr.slice(i, mid + 1)); 
  19.  
  20. if (j <= ed) { 
  21. mArr = mArr.concat(arr.slice(j, ed + 1)); 
  22.  
  23. for (var h = 0; h < mArr.length; h ++) { 
  24. arr[bt + h] = mArr[h]; 

寫歸并排序的時候還有一個小插曲:就是js不能自動取整,后來用了parseInt方法,感覺萌萌大。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品在线不卡| 亚洲国产成人精品女人久久久| 国产精品嫩草影院一区二区| 日韩欧美在线一区| 亚洲色图15p| 国产成人综合亚洲| 日韩激情av在线免费观看| 日韩在线国产精品| 日韩精品极品视频免费观看| 国产精品r级在线| 久久九九全国免费精品观看| 欧美日韩人人澡狠狠躁视频| 91av视频在线观看| 精品国产乱码久久久久久天美| 国产精品久久久久aaaa九色| 国产成人久久久精品一区| 1769国内精品视频在线播放| 91中文字幕一区| 91精品国产免费久久久久久| 欧洲成人免费视频| 日韩有码视频在线| 国产69精品久久久久99| 69久久夜色精品国产7777| 91精品国产综合久久香蕉的用户体验| 自拍偷拍亚洲区| 日韩欧美一区二区三区久久| 欧美人成在线视频| 欧美成人免费视频| 欧美成人亚洲成人日韩成人| 国产精品午夜国产小视频| 精品一区精品二区| 亚洲电影免费观看高清| www高清在线视频日韩欧美| 国产美女久久精品| 九九九热精品免费视频观看网站| 成人中心免费视频| 91精品久久久久久久久青青| 91免费人成网站在线观看18| 日本精品一区二区三区在线播放视频| 一本一道久久a久久精品逆3p| 欧美日本黄视频| 亚洲第一视频在线观看| 亚洲天堂av在线免费| 亚洲影院污污.| 成人免费看黄网站| 国产精品一区二区三区毛片淫片| 国产精品视频公开费视频| 亚洲女人被黑人巨大进入| 这里只有精品丝袜| 日韩av在线导航| 精品呦交小u女在线| 国产99视频在线观看| 国产97在线|亚洲| 精品无码久久久久久国产| 亚洲人成电影在线观看天堂色| 亚洲高清一区二| 国产视频在线一区二区| 大荫蒂欧美视频另类xxxx| 亚洲欧美精品一区二区| 日本最新高清不卡中文字幕| 51精品在线观看| 国产欧美日韩精品在线观看| 日韩美女在线观看一区| 久久综合88中文色鬼| 久久久精品国产网站| 欧美电影在线观看高清| 欧美黑人狂野猛交老妇| 欧美综合国产精品久久丁香| 伊人久久综合97精品| 日韩一级裸体免费视频| 欧美激情精品久久久久久大尺度| 亚洲人成77777在线观看网| 日韩亚洲精品电影| 国产一区香蕉久久| 亚洲成人精品av| 欧美国产激情18| 欧美插天视频在线播放| 久久久久日韩精品久久久男男| 日韩亚洲成人av在线| 51午夜精品视频| 国产91ⅴ在线精品免费观看| 欧美天天综合色影久久精品| 国产精品欧美一区二区三区奶水| 久久久久久这里只有精品| 欧美激情啊啊啊| 精品久久中文字幕久久av| 91精品国产网站| 国产原创欧美精品| 国产亚洲精品久久久久久牛牛| 久久久免费在线观看| 国外成人在线直播| …久久精品99久久香蕉国产| 日韩久久精品电影| 精品少妇一区二区30p| 欧美性在线观看| 在线观看免费高清视频97| 日韩在线观看免费全集电视剧网站| 日本高清视频精品| 538国产精品一区二区在线| 一区二区三区在线播放欧美| 日韩精品黄色网| 日韩欧美精品网站| 7m第一福利500精品视频| 欧美大肥婆大肥bbbbb| 国产精品老女人精品视频| 亚洲va久久久噜噜噜久久天堂| 国产亚洲欧洲在线| 欧美激情中文字幕乱码免费| 欧美成人小视频| 亚洲成人久久电影| 91网站免费观看| 国产精品久久电影观看| 中文字幕久热精品在线视频| 成人久久久久久久| 2024亚洲男人天堂| 亚洲欧美中文在线视频| 韩国美女主播一区| 一区二区在线视频播放| 欧美成人免费全部| 精品久久久久久久久国产字幕| 久久人人爽人人爽人人片av高请| 不卡伊人av在线播放| 日韩av色综合| 91香蕉嫩草神马影院在线观看| 国产精品成久久久久三级| 欧美一级片在线播放| 久久精品亚洲国产| 久久久久久久999精品视频| 久久久精品影院| 在线免费观看羞羞视频一区二区| 91精品久久久久久久久久| 日韩av在线免费看| 欧美二区乱c黑人| 国产欧美最新羞羞视频在线观看| 国内精品久久久| 中文字幕av一区二区三区谷原希美| 一区二区三区国产视频| 亚洲精品日韩久久久| 色噜噜狠狠狠综合曰曰曰88av| 国产精品99久久久久久久久| 亚洲视频专区在线| 亚洲欧美日韩综合| 欧美综合国产精品久久丁香| 日韩成人在线观看| 91视频-88av| 日韩视频一区在线| 欧美日本亚洲视频| 国产成人精品在线播放| 国产欧美精品久久久| 日韩欧美一区二区三区| 日韩在线www| 国产精品久久久久免费a∨大胸| 精品国产乱码久久久久酒店| 亚洲色图av在线| 欧美精品久久久久久久久久| 亚洲乱码国产乱码精品精天堂| 欧美精品成人91久久久久久久| 国产精品专区h在线观看| 欧美激情xxxx| 欧美日韩成人在线观看| 欧美日韩亚洲一区二区三区| 欧美高清视频一区二区| 欧美成人激情图片网| 亚洲视频在线看|