【发布时间】:2021-04-20 21:39:34
【问题描述】:
int main() {
int arr[] = { 64, 25, 12, 22, 11 };
int n = sizeof(arr) / sizeof(arr[0]);
selectionSort(arr, n);
return 0;
}
void selectionSort(int arr[], int n) {
int i, j, min_idx;
// One by one move boundary of unsorted subarray
for (i = 0; i < n - 1; i++) {
// Find the minimum element in unsorted array
min_idx = i;
for (j = i + 1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
// Swap the found minimum element with the first element
swap(&arr[min_idx], &arr[i]);
}
}
我看到了这个 C 语言代码,它会执行称为选择排序的排序算法。但我的问题在于selectionSort 函数。
为什么在第一个 for 循环中,条件是 i < n - 1 而在第二个循环中是 j < n?
i < n - 1 究竟会做什么?为什么第二个循环有不同的情况?您能否像我在小学六年级一样向我解释此代码。谢谢。
【问题讨论】:
-
如果
i上升到n,当它之后没有什么可比较的时候,你会把它和什么比较?
标签: c algorithm sorting selection-sort