9-选择排序算法

2022-02-25 08:59:09 浏览数 (1)

思想:

依次遍历数组的每一个元素,在该元素之后寻找一个比其小/大的一个最小值/最大值,记录下标。退出循环时进行交换。

注意点:
  • 不稳定的排序算法
代码:
代码语言:javascript复制
#include <stdio.h>
typedef int bool;
#define true 1
#define false 0

void swap(int *a, int* b) {
    int t = *a;
    *a = *b;
    *b = t;
}


void show(int *a, int n) {
    int i = 0;
    for (i = 0; i < n; i  ) {
        printf("%d", a[i]);
        if (i != n - 1) {
            printf(" ");
        }
    }
    printf("n");
}


void SelectSort(int *a, int n) {
    int i, j;
    for (i = 0; i < n; i  ) {
        int minIndex = i;
        for (j = i   1; j < n; j  ) {
            if (a[j] < a[minIndex]) {
                minIndex = j;
            }
        }
        if (minIndex != i) {
            swap(&a[minIndex], &a[i]);
        }
    }
}

int main() {
    int a[] = {3, 1, 2, 4, 7, 0, 5, 8, 6, 9};
    int n = sizeof(a) / sizeof(int);
    show(a, n);
    SelectSort(a, n);
    show(a, n);
    return 0;
}

0 人点赞