主要函数
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;
}