數據結構之排序篇——選擇排序 //交換第i下標與最小下標,只交換一次

首先在數組的所有元素中找到一個最小的元素,

將該元素與數組的第一個元素進行交換,

這樣交換之後,數組的第一個元素就變成了數組元素中的最小值,

    再在除第一個元素外的其它數組元素中,尋找最小的數組元素,

    將這個第二小的數組元素與數組的第二個位置的元素進行交換,

    這樣交換之後,數組的第二個元素就變成了數組元素中的第二小的值

key: 實現選擇排序算法時,需要使用嵌套的兩個循環來實現:外層循環用於控制排序的趟次,裏層循環用於尋找指定範圍內的最小值。

typedef int DataType;
void selects(DataType *a, int n) {
    for (int i = 0; i < n - 1; i++) {
        int k = i; //這裏認爲k就是最小
        for (int j = i + 1; j < n; j++) {
            if (a[j] < a[k]) {
                k = j;
            }
        }
        if (k != i) {
            swap(a[k], a[i]);
        }
    }
}
void print(DataType* a, int n) {
    for (int i = 0; i < n; i++)
        printf("%d ", a[i]);
    printf("\n");
}
int main() {
    int a[10] = {3, 2, 4, 5, 7, 8, 9, 1, 6, 0};
    
    selects(a, 10);
    print(a, 10);
    return 0;
}
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章