<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • c語言選擇排序法詳情(選擇排序算法c語言代碼)


    上次給大家講了三分鐘快速記住冒泡排序算法,今天給大家講講選擇排序算法,依然只用三分鐘就可以快速記住,跟著我一起來吧!

    上動畫

    三分鐘快速記住選擇排序算法

    三分鐘快速記住選擇排序算法

    給 “6 5 4 3 2 1” 6個數字增序排序的流程

    大體過程:

    我們把一串待排序的數字分為已排序、和待排序的兩類(當然,初始狀態全都是待排序的)。然后每一趟將待排序中的最小值和待排序中第1個元素交換,此時待排序中第1個元素就能歸到已排序中。將這個流程進行 6 趟就完成了排序。

    選擇排序原理:

    ①、初始時在序列中找到最小(大)元素,放到序列的起始位置作為已排序序列

      ②、再從剩余未排序元素中繼續尋找最?。ù螅┰?,放到已排序序列的末尾

     ③、以此類推,直到所有元素均排序完畢。

    選擇排序與冒泡排序區別:

    選擇排序是在剩下的待排序數字里面找個最小的再交換;冒泡排序是看見小的就交換。

    選擇排序代碼:

    #include <cstdio>

    /* 交換函數

    * 傳入:待交換兩元素的地址 */

    void swap(int *x, int *y) {

    int temp = *x;

    *x = *y;

    *y = temp;

    }

    /* 增序的選擇排序

    * 傳入:待排序數組a、數組元素個數n */

    void selectSort(int a[], int n) {

    /* 進行n趟操作 */

    for(int i = 0; i < n; i++) {

    int min_index = i; //記錄待排序部分中最小值的下標

    /* 掃描待排序部分,知道到最小值的下標 */

    for(int j = i; j < n; j ++) {

    if(a[j] < a[min_index])

    min_index = j; //時刻更新最小值下標

    }

    swap(a + i,a + min_index); //交換 當前位 和 待排序部分中最小值

    }

    }

    int main() {

    int a[] = {5,2,3,4,15,16,100,23,88};

    selectSort(a, 9);

    for(int i = 0; i < 9; i++)

    printf(“%d “, a[i]);

    //輸出結果:2 3 4 5 15 16 23 88 100

    }

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费