最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言中的冒泡排序問題

 更新時(shí)間:2022年12月27日 09:01:24   作者:我的博爾赫斯  
這篇文章主要介紹了C語言中的冒泡排序問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

冒泡排序的原理

冒泡排序的步驟

假設(shè)我們現(xiàn)在有一個(gè)無序數(shù)組 arr[] = { 2,9,1,3,7,6 }; 我們要用冒泡排序法讓其變得有序,到底該怎么做呢?我們先來看一下思路

 在這一次(注意!是一次!)冒泡排序中,我們讓這個(gè)無序數(shù)組中最大的數(shù)9排到了最后,以此類推,我們總共需要進(jìn)行多少次這樣的排序呢?對(duì)的,答案是5次。

好的,那么這是我們對(duì)冒泡排序外部的分析,那么一次冒泡排序在數(shù)組里面要進(jìn)行多少次比較呢?

讓我們想一想,第一次我們冒泡排序?qū)⒆畲蟮臄?shù)9排到了最后,那么第二次還需要對(duì)9進(jìn)行比較嗎?

所以數(shù)組內(nèi)部元素排序的比較是會(huì)隨著外部冒泡排序次數(shù)而改變的。所以我們應(yīng)該創(chuàng)建兩個(gè)變量,一個(gè)用來控制外部排序次數(shù),一個(gè)用來控制內(nèi)部比較次數(shù)。接下來就上代碼吧

冒泡排序代碼

在這里要注意的是對(duì)于i和j的限制條件,要清楚i和j分別代表啥,并且弄清楚排序次數(shù)和比較次數(shù)就沒有問題了呀

冒泡排序兩種不同循環(huán)方法

在數(shù)據(jù)結(jié)構(gòu)與算法這門課程中,排序算法至關(guān)重要。

冒泡排序就是其中之一,其代碼我們必須爛熟于心。

原理

從表頭向表尾循環(huán),

比較相鄰的兩個(gè)元素大小,若前元素大于后元素,則交換兩者位置。

然后繼續(xù)向下比較

如下表

大的數(shù)字會(huì)慢慢置入表尾,猶如冒泡一般,大泡更快速度向水面靠近,故稱之為冒泡排序

上圖所示

當(dāng)冒泡到第四趟以后就沒必要往下面繼續(xù)循環(huán)

不然會(huì)增加復(fù)雜度

我們可以增加一個(gè)標(biāo)志flag

每趟冒泡之前會(huì)將flag初始化為0

假如冒泡的過程中有元素的交換,就將flag賦值為1;

在每趟冒泡之后會(huì)有檢驗(yàn)flag是否為0

如果為0,代表沒有元素交換,break;

//第一種循環(huán)方法
void BubbleSort(ElementType A[],int N){    
 
for(int p=N-1;p>0;p--){
        int flag=0;    
        for(int i=1;i<=p;i++){
            if(A[i-1]>A[i]){    //如果前面元素大于后面元素就交換 
               int temp=A[i-1];    //swap(A[i-1],A[i]);
                A[i-1]=A[i];
                A[i]=temp;
                flag=1;
            }
        }
        if(flag==0){        //一輪冒泡后并沒有發(fā)生交換則說明數(shù)組已經(jīng)有序
            break;          //這樣做可以減少循環(huán)次數(shù)
        }
    }
}
//第二種循環(huán)方法
void BubbleSort(ElementType A[],int N){
    
    for(int i=0;i<N;i++){
        int flag=0;
        for(int j=0;j<N-i-1;j++){
            if(A[i-1]>A[i]){    //如果前面元素大于后面元素就交換
                int temp=A[i-1];    //swap(A[i-1],A[i]);
                A[i-1]=A[i];
                A[i]=temp;
                flag=1;
            }
        }
        if(flag==0){
            break;
        }
    }
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解C語言結(jié)構(gòu)體,枚舉,聯(lián)合體的使用

    詳解C語言結(jié)構(gòu)體,枚舉,聯(lián)合體的使用

    這篇文章主要給大家介紹一下關(guān)于C語言中結(jié)構(gòu)體、枚舉、聯(lián)合體的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考一下
    2022-07-07
  • C++無法打開源文件bits/stdc++.h的問題

    C++無法打開源文件bits/stdc++.h的問題

    這篇文章主要介紹了C++無法打開源文件bits/stdc++.h的問題以及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C++中for auto的用法及說明

    C++中for auto的用法及說明

    這篇文章主要介紹了C++中for auto的用法及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C++超詳細(xì)講解操作符的重載

    C++超詳細(xì)講解操作符的重載

    C++預(yù)定義中的運(yùn)算符的操作對(duì)象只局限于基本的內(nèi)置數(shù)據(jù)類型,但是對(duì)于我們自定義的類型(類)是沒有辦法操作的。但是大多時(shí)候我們需要對(duì)我們定義的類型進(jìn)行類似的運(yùn)算,這個(gè)時(shí)候就需要我們對(duì)這么運(yùn)算符進(jìn)行重新定義,賦予其新的功能,以滿足自身的需求
    2022-06-06
  • C++的深淺拷貝和寫時(shí)拷貝你了解嗎

    C++的深淺拷貝和寫時(shí)拷貝你了解嗎

    這篇文章主要為大家詳細(xì)介紹了C++的深淺拷貝和寫時(shí)拷貝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • OpenCV視頻流C++多線程處理方法詳細(xì)分析

    OpenCV視頻流C++多線程處理方法詳細(xì)分析

    為OpenCV是搞計(jì)算機(jī)視覺必須要掌握的基礎(chǔ),這篇文章主要給大家介紹了關(guān)于OpenCV視頻流多線程處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • C++高級(jí)數(shù)據(jù)結(jié)構(gòu)之線段樹

    C++高級(jí)數(shù)據(jù)結(jié)構(gòu)之線段樹

    這篇文章主要介紹了C++高級(jí)數(shù)據(jù)結(jié)構(gòu)之線段樹,文章圍繞主題的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • C語言實(shí)現(xiàn)井字棋游戲(人機(jī)對(duì)弈)

    C語言實(shí)現(xiàn)井字棋游戲(人機(jī)對(duì)弈)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)井字棋人機(jī)對(duì)弈游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 如何用c++表驅(qū)動(dòng)替換if/else和switch/case語句

    如何用c++表驅(qū)動(dòng)替換if/else和switch/case語句

    本文將介紹使用表驅(qū)動(dòng)法,替換復(fù)雜的if/else和switch/case語句,想了解詳細(xì)內(nèi)容,請(qǐng)看下文
    2021-08-08
  • C語言中設(shè)置用戶識(shí)別碼的相關(guān)函數(shù)的簡(jiǎn)單講解

    C語言中設(shè)置用戶識(shí)別碼的相關(guān)函數(shù)的簡(jiǎn)單講解

    這篇文章主要介紹了C語言中設(shè)置用戶識(shí)別碼的相關(guān)函數(shù)的簡(jiǎn)單講解,包括setuid()函數(shù)和setreuid()函數(shù)以及setfsuid()函數(shù),需要的朋友可以參考下
    2015-08-08

最新評(píng)論

安庆市| 凯里市| 广灵县| 那曲县| 湖北省| 黔西| 综艺| 四子王旗| 天台县| 扬中市| 黔南| 商丘市| 土默特左旗| 孟津县| 漳州市| 玉龙| 潮安县| 桦甸市| 西和县| 密云县| 百色市| 敖汉旗| 修武县| 永嘉县| 合水县| 涟源市| 万荣县| 台州市| 遵义市| 昌吉市| 利川市| 红河县| 彭阳县| 方山县| 瑞金市| 湄潭县| 金平| 广灵县| 深州市| 霍林郭勒市| 郯城县|