首先在數組的所有元素中找到一個最小的元素,
將該元素與數組的第一個元素進行交換,
這樣交換之後,數組的第一個元素就變成了數組元素中的最小值,
再在除第一個元素外的其它數組元素中,尋找最小的數組元素,
將這個第二小的數組元素與數組的第二個位置的元素進行交換,
這樣交換之後,數組的第二個元素就變成了數組元素中的第二小的值
key: 實現選擇排序算法時,需要使用嵌套的兩個循環來實現:外層循環用於控制排序的趟次,裏層循環用於尋找指定範圍內的最小值。
typedef int DataType;
void selects(DataType *a, int n) {
for (int i = 0; i < n - 1; i++) {
int k = i; //這裏認爲k就是最小
for (int j = i + 1; j < n; j++) {
if (a[j] < a[k]) {
k = j;
}
}
if (k != i) {
swap(a[k], a[i]);
}
}
}
void print(DataType* a, int n) {
for (int i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
int main() {
int a[10] = {3, 2, 4, 5, 7, 8, 9, 1, 6, 0};
selects(a, 10);
print(a, 10);
return 0;
}