首先,我输入要输入的数字,然后输入数字。他需要对他们进行气泡排序,但其写法像======>
1 3 2 6 = 0 0 0 0(但必须类似于1 2 3 6(从小到大))
我想要的应用程序=
7
1 5 2 7 4 7 3
1 2 3 4 5 7 7
#include<stdio.h>
int main()
{
int numbers[500000];
int counter=0;
int howmany;
scanf("%d",&howmany);//getting how many numbers will we enter
int howmany2=howmany;//we will use this for write all numbers after all
while(howmany>0)//getting all numbers
{
scanf("%d",&numbers[counter]);
howmany--;
counter++;
}
int checker1,checker2;//its gonna check first and second number, then second and third...etc
int hm=howmany-1;//its gonna check entered number-1 times(1,2,3)={1,2},{2,3}
int clone1;//later we will copy numbers[checker1]
int tentime=10;//we gonna do bubble sort 10 times
while(tentime>0)//doing bubble sort
{
checker1=0;
checker2=1;
while(hm>0)
{
if(numbers[checker1]>numbers[checker2])
{
clone1=numbers[checker1];
numbers[checker1]=numbers[checker2];
numbers[checker2]=clone1;
}
checker1++;
checker2++;
hm--;
}
tentime--;
}
int counter2=0;
while(howmany2>0)//showing new number sort on screen
{
printf("%d ",numbers[counter]);
howmany2--;
counter2++;
}
printf("\n");
return 0;
}
最佳答案
您的代码中有几个问题:
在您的第一个while循环结束时,howmany将为0。结果hm将被设置为-1,而sort循环(而hm> 0)将永远不会运行。
当您打印出结果时,将使用counter作为数组索引(这是4,超出范围,并且由于您要增加counter2而不会改变。因此,您将打印出一个未定义的值(在您的情况下为0)四次。
声明大小为500000的数组可能会炸毁堆栈。即使不是,它也比您需要的大得多
关于c - 我尝试用C进行冒泡排序,但是它不起作用(正在执行冒泡排序10次),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58564966/