选择排序


主要函数

void select_sort(int *num, int n) {
    for (int i = 0; i < n - 1; i++) {
        int min = i;
        for (int j = i + 1; j < n; j++) {
            if (num[min] > num[j]) min = j;
        }
        swap(num[min], num[i]);
    }
    return ;
} 

代码演示

#include 
#include 
#include 
//O(n^2)
//不稳定排序 
//一次循环交换次数一次 
#define swap(a, b) {\
    __typeof(a) temp = (a);\
    a = b; b = temp;\
}

void select_sort(int *num, int n) {
    for (int i = 0; i < n - 1; i++) {
        int min = i;
        for (int j = i + 1; j < n; j++) {
            if (num[min] > num[j]) min = j;
        }
        swap(num[min], num[i]);
    }
    return ;
} 

int main() {
    #define n 200
    int num[n];
    for (int i = 0; i < n; i++) {
        num[i] = rand() % n * 20;
    }
    for (int i = 0; i < n; i++) {
        i && printf(", ");
        printf("%d", num[i]);
    }    
    select_sort(num, n);
    printf("\n");
    for (int i = 0; i < n; i++) {
        i && printf(", ");
        printf("%d", num[i]);
    }
    return 0;
}

文章作者: Axieyun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Axieyun !
评论
评论
  目录