成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

bbbbbb / 1167人閱讀

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

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

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

    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è)置兩個變量i、j,排序開始的時候:i=0,j=N-1;   

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

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

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

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

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

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

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

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/94708.html

相關(guān)文章

  • 冒泡、選擇快速排序js

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

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

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

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

    摘要:本文對一些排序算法進(jìn)行了簡單分析,并給出了的代碼實現(xiàn)。平均時間復(fù)雜度不好分析,它是冒泡排序是穩(wěn)定的排序算法。冒泡排序是原地排序算法原地排序指的是空間復(fù)雜度是的排序算法。歸并排序,會將數(shù)組從中間分成左右兩部分。 本文對一些排序算法進(jìn)行了簡單分析,并給出了 javascript 的代碼實現(xiàn)。因為本文包含了大量的排序算法,所以分析不會非常詳細(xì),適合有對排序算法有一定了解的同學(xué)。本文內(nèi)容其實不...

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

    摘要:優(yōu)化當(dāng)待排序序列長度時,使用插入排序,可以加速排序。插入排序原理通過構(gòu)建有序序列,對于未排序元素,在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。堆排序可通過樹形結(jié)構(gòu)保存部分比較結(jié)果,可減少比較次數(shù)。 前端學(xué)習(xí):教程&開發(fā)模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關(guān)注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:排序算法 JavaScript-排序算法及簡易優(yōu)化 快速...

    ningwang 評論0 收藏0
  • JS排序算法

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

    notebin 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<