gpt4 book ai didi

C:我编写了一个程序来按升序对数组进行排序,但无法找出 for 循环中某个步骤的原因

转载 作者:行者123 更新时间:2023-11-30 20:41:54 25 4
gpt4 key购买 nike

我正在编写一个程序,使用 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 元素。由于元素jj+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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com