int i, j, temp, sort[5] = {5, 3, 6, 43, 11};
for(i = 0; i < 5; i++) {
for(j = 0; j < i; j++) {
if(sort[j] < sort[i]) {
temp = sort[i];
sort[i] = sort[j];
sort[j] = temp;
}
}
}
我正在尝试进行冒泡排序,并尝试在外部 for 循环中初始化一个“小”变量,以将其设置为最小整数。有什么想法吗?
if(sort[j] < sort[i])
这个if条件在逻辑上是错误的,这就是交换不起作用的原因,相反它应该是
if(sort[j] > sort[j+1])
而且不需要运行5次外循环。 4 就足够了,因为所有元素都在 n-1 迭代时排序。 类似地,内部循环可以迭代n-i-1次而不是i,因为最后的元素被排序
最后修改后的代码是
for(i = 0; i < 4; i++) {
for(j = 0; j < i-1; j++) {
if(sort[j] > sort[j+1]) {
temp = sort[i];
sort[i] = sort[j];
sort[j] = temp;
}
}
}