用冒泡法对10个整数(这10个整数可随机生成,可初始化,也可以逐个从键盘读入)排序。然后输入一个数,将该数插入到数组中,使插入后的数组仍然有序。并输出插入后的数组。
参考运行一下:
如有帮助请在我的回答上点个【采纳】,谢谢!
#include <stdio.h>
main()
{
int i,a[12],t,k,m;
printf("请输入10个数,输一个回车一次:");
for(i=0;i<11;i++)
a[i]=0;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(k=1;k<11;k++)
for(i=k+1;i<11;i++)
while(a[i-1]>a[i])
{
t=a[i-1];
a[i-1]=a[i];
a[i]=t;
}
printf("排序过后的结果:\n");
for(i=1;i<11;i++)
printf("%d ",a[i]);
printf("\n请插入一个数:\n");
scanf("%d",&m);
printf("\n新的排序结果:\n");
for(i=1;i<11;i++)
if(a[i]>m)
break;
for(k<=11;k>i;k--)
a[k]=a[k-1];
a[i]=m;
for(i=1;i<=11;i++)
printf("%d ",a[i]);
}
定义长度为11的数组,冒泡法排序,然后搜索大于插入值的位置,将该位置之后的元素都后移一位
void sort(int a[],int n)
{
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i-1;j++)
{
if(a[j] > a[j+1])
{
int t = a[j];
a[j] = a[j+1]
a[j+1] = t;
}
}
}
void insert(int a[],int n,int b)
{
bool t = false;
for(int i=0;i<n;i++)
{
if(b < a[i])
{
for(int j=n;j>i;j--)
a[j] = a[j-1];
a[i] = b;
t = true;
break;
}
}
if(!t)
a[n] = b;
}
void main()
{
int a[11] = {39,21,43,94,29,12,3,92,23,5};
sort(a,10);
insert(a,10,78);
for(int i=0;i<11;i++)
printf("%d ",a[i]);
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632