博客專欄

        EEPW首頁 > 博客 > C語言中的最常用的兩種排序算法你知道嗎?

        C語言中的最常用的兩種排序算法你知道嗎?

        發(fā)布人:嵌入式Linux 時間:2023-01-10 來源:工程師 發(fā)布文章
        冒泡法排序

        核心思想:若有N個數(shù)從小到大排序,需進行N-1輪比較,第一輪每相鄰的兩個數(shù)據(jù)進行比較N-1次,最終挑選出最大的數(shù),放到這一輪的最后位置;第二輪比較N-1-i次,挑選出這一輪最大的數(shù),放入這一輪的最后位置;依此類推,每一輪都挑選出最大的數(shù),故稱之為冒泡排序。


        第一個for循環(huán)決定循環(huán)的次數(shù),因為要比較N-1輪,所以第一個for循環(huán)的終止條件是i<N-1;第二個for循環(huán)決定每一輪要比較的次數(shù),因為每一輪都要選出一個最大的數(shù),所以每一輪的比較次數(shù)都要比上一輪少一次,即for循環(huán)終止條件為j<N-1-i;

        選擇法排序

        核心思想:若有N個數(shù)從小到大排序,需進行N-1輪比較,每一輪比較都找出這一輪最小值的下標,然后將這個最小值和這一輪開始假定的最小值進行交換。

        第一個for循環(huán)決定要循環(huán)的次數(shù),即要循環(huán)N-1輪;第二個for循環(huán)決定每一輪需要比較的次數(shù),因為每一輪都會選擇出一個最小值,所以每一輪的比較次數(shù)都會遞減,即每一輪都是從i+1處開始比較到最后。需要注意的是內(nèi)for循環(huán)每一次比較僅僅交換數(shù)組下標,只有當(dāng)這一輪比較完畢,才進行一次數(shù)據(jù)交換。

        總結(jié)

        冒泡排序和選擇排序時間復(fù)雜度都是O(n^2),但是選擇排序每循環(huán)一輪只進行一次數(shù)據(jù)交換,而冒泡排序每一輪最多需要進行N-i-1次數(shù)據(jù)交換。


        *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



        關(guān)鍵詞: 排序算法

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 明星| 宜川县| 南通市| 乌兰浩特市| 连江县| 通河县| 萨嘎县| 和林格尔县| 庆城县| 仙桃市| 泸定县| 东乡族自治县| 墨竹工卡县| 如皋市| 云梦县| 临颍县| 湖北省| 红原县| 邵东县| 扬州市| 高尔夫| 称多县| 溆浦县| 桐柏县| 内丘县| 永平县| 安乡县| 牡丹江市| 青海省| 武陟县| 承德市| 桑植县| 岳普湖县| 原阳县| 康马县| 明星| 闵行区| 南阳市| 治县。| 桑日县| 宁河县|