源码+注释
#include <stdio.h>
#define LENGTH(arr) (sizeof(arr)/sizeof((arr)[0]))
void selectSort(int arr[], int length);
int main() {
int arr[] = {1, 80, 2, 57, 13};
printf("排序前 arr = ");
for (int i = 0; i < LENGTH(arr); i++) {
printf("%d ", arr[i]);
}
printf("\n----------------------------\n");
selectSort(arr, LENGTH(arr));
printf("排序后 arr = ");
for (int i = 0; i < LENGTH(arr); i++) {
printf("%d ", arr[i]);
}
printf("\n----------------------------\n");
return 0;
}
void selectSort(int arr[], int length) {
for (int i = 0; i < length - 1; i++) {
int minIndex = i;
int min = arr[i];
for (int j = i + 1; j < length; j++) {
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
if (minIndex != i) {
arr[minIndex] = arr[i];
arr[i] = min;
}
printf("第 %d 轮排序 arr = ", i + 1);
for (int j = 0; j < length; j++) {
printf("%d ", arr[j]);
}
printf("\n");
}
}