成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js實(shí)現(xiàn)冒泡排序,快速排序,選擇排序

bbbbbb / 1118人閱讀

摘要:用冒泡排序快速排序選擇排序冒泡排序冒泡排序是比較經(jīng)典的排序方法,是一種用時(shí)間換空間的排序方法。找到并交換的時(shí)候,指針位置不變。選擇排序沒趟都會(huì)產(chǎn)生最小值,它不是相鄰元素的比較而是在該元素設(shè)置一個(gè)索引。選擇排序循環(huán)找到從開始到最后的最小的數(shù)

用js冒泡排序,快速排序,選擇排序 1.冒泡排序

冒泡排序是比較經(jīng)典的排序方法,是一種用時(shí)間換空間的排序方法。我總結(jié)了一下它的特點(diǎn):(1)它的時(shí)間復(fù)雜度是;(2)每一趟相鄰元素兩兩比較完畢就會(huì)產(chǎn)生最值(最大值);(3)每次比較完后下一趟就會(huì)少一個(gè)元素參與比較(即該趟比較的最大值)。
// 冒泡排序

    function maopao(arr){
        for(var i=0;iarr[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)設(shè)置兩個(gè)變量i、j,排序開始的時(shí)候:i=0,j=N-1;   

2)以第一個(gè)數(shù)組元素作為關(guān)鍵數(shù)據(jù),賦值給key,即 key=A[0];   

3)從j開始向前搜索,即由后開始向前搜索(j=j-1即j--), 找到第一個(gè)小于key的值A(chǔ)[j],A[i]與A[j]交換;   

4)從i開始向后搜索,即由前開始向后搜索(i=i+1即i++), 找到第一個(gè)大于key的A[i],A[i]與A[j]交換;   

5)重復(fù)第3、4、5步,直到I=J; (3,4步是在程序中沒找到時(shí)候j=j-1,i=i+1,直至找到為止。 找到并交換的時(shí)候i, j指針位置不變。另外當(dāng)i=j這過程一定正好是i+或j-完成的最后令循環(huán)結(jié)束)

    function quickSort(arr){
        // 如果數(shù)組長(zhǎng)度小于等于1,直接返回
        if(arr.length<=1){return arr;}
        // 選擇一個(gè)基準(zhǔn)
        var pivotIndex = Math.floor(arr.length/2);
        // 將基準(zhǔn)與原數(shù)組分離
        var pivot = arr.splice(pivotIndex,1)[0];
        // 定義左右兩個(gè)空數(shù)組用來存放
        var left = [];
        var right=[];
        // 循環(huán),如果小于基準(zhǔn)就放左邊,大于基準(zhǔn)就放右邊
        for(var i=0;i
3.選擇排序

選擇排序相比冒泡排序不穩(wěn)定,時(shí)間復(fù)雜度也是。選擇排序沒趟都會(huì)產(chǎn)生最小值,它不是相鄰元素的比較而是在該元素設(shè)置一個(gè)索引i。然后與數(shù)組的其他元素依次比較(除了上一個(gè)索引值),直到找到小于該元素(索引j)時(shí)交換兩元素,接著繼續(xù)從i索引(此時(shí)已經(jīng)不是原來的數(shù)值)值與索引j+1值比較。
// 選擇排序

    function selectSort(arr){
        var minIndex;
        var temp;
        // 循環(huán)
        for(var i=0;i           
               
                                           
                       
                 

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/94708.html

相關(guān)文章

  • 冒泡、選擇快速排序js

    摘要:冒泡排序冒泡排序算法的運(yùn)作如下比較相鄰的元素。交換次數(shù)比冒泡排序少多了快速排序快速排序算法的運(yùn)作如下找一個(gè)數(shù),對(duì)數(shù)組進(jìn)行掃描,小于這個(gè)數(shù)的放在這個(gè)數(shù)的左側(cè),大于它的放在數(shù)組右側(cè)在對(duì)左右兩側(cè)的數(shù)組分別進(jìn)行剛才的操作,直到數(shù)組長(zhǎng)度為時(shí)結(jié)束。 1.冒泡排序 1.1 冒泡排序算法的運(yùn)作如下: 1.比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。 2.對(duì)每一對(duì)相鄰元素作同樣的工作,從開始第...

    codeKK 評(píng)論0 收藏0
  • JS數(shù)據(jù)結(jié)構(gòu)與算法_排序和搜索算法

    摘要:上一篇數(shù)據(jù)結(jié)構(gòu)與算法樹寫在前面這是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的最后一篇博客,也是在面試中常常會(huì)被問到的一部分內(nèi)容排序和搜索。 上一篇:JS數(shù)據(jù)結(jié)構(gòu)與算法_樹 寫在前面 這是《學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法》的最后一篇博客,也是在面試中常常會(huì)被問到的一部分內(nèi)容:排序和搜索。在這篇博客之前,我每每看到排序頭就是大的,心里想著類似冒泡排序,兩層遍歷啪啪啪就完事了,然后再也無心去深入研究排序相...

    姘擱『 評(píng)論0 收藏0
  • 排序算法分析總結(jié)(附js實(shí)現(xiàn)

    摘要:本文對(duì)一些排序算法進(jìn)行了簡(jiǎn)單分析,并給出了的代碼實(shí)現(xiàn)。平均時(shí)間復(fù)雜度不好分析,它是冒泡排序是穩(wěn)定的排序算法。冒泡排序是原地排序算法原地排序指的是空間復(fù)雜度是的排序算法。歸并排序,會(huì)將數(shù)組從中間分成左右兩部分。 本文對(duì)一些排序算法進(jìn)行了簡(jiǎn)單分析,并給出了 javascript 的代碼實(shí)現(xiàn)。因?yàn)楸疚陌舜罅康呐判蛩惴?,所以分析不?huì)非常詳細(xì),適合有對(duì)排序算法有一定了解的同學(xué)。本文內(nèi)容其實(shí)不...

    liaoyg8023 評(píng)論0 收藏0
  • 溫故js系列(2)-快速排序&插入排序&選擇排序&冒泡排序算法&優(yōu)化

    摘要:優(yōu)化當(dāng)待排序序列長(zhǎ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-排序算法及簡(jiǎn)易優(yōu)化 快速...

    ningwang 評(píng)論0 收藏0
  • JS排序算法

    摘要:冒泡排序冒泡算法是比較相鄰的兩項(xiàng),如果前者比后者大,就交換他們。插入排序最好情況下時(shí)間復(fù)雜度是,其他情況下也都是。代碼演示插入排序歸并排序原生里面的方法,在里面是用歸并排序?qū)崿F(xiàn)的,而在里面是用快速排序的變體來實(shí)現(xiàn)的。 1、冒泡排序 冒泡算法是比較相鄰的兩項(xiàng),如果前者比后者大,就交換他們。 假設(shè)一共有n項(xiàng),那么一共需要n-1趟,第一趟需要交換n-1次,但是第一趟結(jié)束后,最后一項(xiàng)基本確定就...

    notebin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<