遇到的问题
我尝试使用冒泡排序法,在输入数后将原本的数组重新排序可是无论如何都无法做到重新排序
在循环阶段的冒泡排序,到了要交换数值的地方突然将数全部变为原本的数
解决方法
冒泡排序没有办法解决这个问题则需要换思路,通过对csdn上面大佬的代码,我发现需要使用迭代法(类似,或者称打擂台法)。具体的算法思路为:将插入的数和原数组的数进行一一比较(原数组为升序),当插入数比原数组大时,对原数组的数和插入数进行交换,当比较发现插入数为最大时将数组最后的数设置为插入数。
这个问题现在的我没办法解答,询问老师过后,老师的解答为,在排序时数组的长度应是固定的才开始排序,而不是在插入时排序。
最终代码(参考大佬)
#include<stdio.h>
int main()
{
int a[11]={1,3,5,7,8,9,10,11,13,14};
int i,t,m;
printf("enter interger number:");
scanf("%d",&m);
for(i=0;i<11;i++)
{
if(m<a[i])
{
t=m;
m=a[i];
a[i]=t;
}
else if(m>=a[9])
{
a[10]=m;
}
}
printf("\n插入后的数组:\n");
for(i=0;i<11;i++)
{
printf("%5d",a[i]);
}
return 0;
}
文章出处登录后可见!
已经登录?立即刷新