博客專欄

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

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

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

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


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

        選擇法排序

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

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

        總結

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


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: 排序算法

        技術專區

        關閉
        主站蜘蛛池模板: 绥德县| 淮滨县| 绥中县| 和静县| 玛多县| 郸城县| 阳谷县| 龙胜| 来安县| 台湾省| 勐海县| 鹿泉市| 阿巴嘎旗| 迭部县| 沙田区| 库尔勒市| 阳城县| 舟山市| 顺昌县| 恩施市| 巢湖市| 海南省| 南康市| 巨野县| 兴化市| 阿拉善右旗| 彝良县| 通许县| 浮山县| 丹棱县| 长沙市| 台中市| 张家界市| 徐汇区| 易门县| 柘荣县| 洪雅县| 侯马市| 岳西县| 忻城县| 弥渡县|