int i, j, t;
for (i = 0; i < n - 1 ; i++) {
for (j = i + 1; j < n; j++) {
if (a[i] > a[j]) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
我的问题是上面的代码是否是正确的选择排序代码?我从各种书籍中得到了这个代码。如果不正确,请解释原因。
最佳答案
是的,代码是正确的。基本上,按升序对数组进行排序将花费昂贵的O(n^2)
。
在每一步 i [0..n-1]
中,您都将索引 [i..n-1]
中最小的元素放入索引 我
。
交换函数可确保您连续将两个比较值中较小的值放置在i
索引处。
关于与以下选择排序代码混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39422694/