資料結構之排序篇——選擇排序 //交換第i下標與最小下標,只交換一次
首先在陣列的所有元素中找到一個最小的元素,
將該元素與陣列的第一個元素進行交換,
這樣交換之後,陣列的第一個元素就變成了陣列元素中的最小值,
再在除第一個元素外的其它陣列元素中,尋找最小的陣列元素,
將這個第二小的陣列元素與陣列的第二個位置的元素進行交換,
這樣交換之後,陣列的第二個元素就變成了陣列元素中的第二小的值
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;
}