天天看點

選擇排序算法思想及示例(C語言實作)

選擇排序算法思想:

  1. 找到數組中從下标0開始的最小的元素,把它和下标為0的元素進行交換
  2. 找到數組中從下标1開始的最小的元素,把它和下标為1的元素進行交換
  3. 依次類推 ,直到數組有序

示例代碼:

#include <stdio.h>

void swap(int* i, int* j) {
    int temp = *i;
    *i = *j;
    *j = temp;
}

void sort(int* N,int n) {
    for (int i = 0; i < n; i++) {
        int min = i; // 記錄最小的元素下标
        for (int j = i + 1; j < n; j++) {
            if(N[j] < N[min]) {
                min = j;
            }
        }

        if(min != i) {
            swap(N + i, N + min);
        }
    }
}

int main(int argc, char **argv)
{
    int N[10] = {1, 2, 3, 7, 8, 9, 10, 4, 5, 6};
    sort(N,10);
    for(int i = 0; i < 10; i++){
        printf("%d",N[i]);
        if(i < 9) printf(",");
    }
    return 0;
}
           

輸出:

1,2,3,4,5,6,7,8,9,10
Process finished with exit code 0
           

時間複雜度O(n2)

繼續閱讀