作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个程序,使用 c 中的冒泡排序方法对数组中的数字进行排序,我知道如何做到这一点,但我无法弄清楚第二个 for 循环的 j<n-i-1
是什么。从数组的长度中减去 i 就是 for 。这可能是一个简单的解释,但我无法用我的小大脑来寻找答案。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int input[10],swap;
printf("Input Numbers: ");
scanf("%d%d%d%d%d%d%d%d%d%d",&input[0],&input[1],&input[2],&input[3],&input[4],&input[5],&input[6],&input[7],&input[8],&input[9]);
int n=10;
for(int i=0;i<n-1;i++){
for(int j=0;j<n-i-1;j++){
if(input[j]>input[j+1]){
swap=input[j];
input[j]=input[j+1];
input[j+1]=swap;
}
}
}
printf("Sorted List: {");
for(int i=0;i<10;i++){
if(i<9){
printf("%d, ",input[i]);
}
else{
printf("%d}",input[i]);
}
}
return 0;
}
最佳答案
在i
循环的第一次迭代中,最大的元素被冒泡到数组中n
元素的末尾。之后,我们知道最后一个元素已完成。所以我们只需要处理剩下的n-1
个元素。
在i
循环的第二次迭代中,下一个最大的元素被冒泡到我们正在处理的n-1
元素的末尾。之后,我们知道最后两个元素已完成。所以我们只需要处理剩下的n-2
个元素。
这样继续下去,以便在每次迭代中,我们只需要处理 n-i
元素。由于元素j
和j+1
是比较的,我们只需要j
就可以到达n-i-2
,即,小于n-i-1
,因为这将使j+1
达到n-i-1
。 (从索引 0
到索引 n-i-1
的元素数量为 n-i
。)
关于C:我编写了一个程序来按升序对数组进行排序,但无法找出 for 循环中某个步骤的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60143346/
我是一名优秀的程序员,十分优秀!