C语言如何把一个整数按大小顺序插入已排好序的数组中?

精选

#include
void main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};//这个不用说了吧
for (i=0;i<10;i++)//十次循环
{
p=i;//到此p等于i等于0
q=a[i];//到此q等于a[0]=127
for (j=i+1;j<10;j++)//九次循环
if(q<a[j])//将q也就是a[i]和他后面的那些个元素比较,如果大于
{
p=j;//p赋值为较大的那个的下标
q=a[j];//q赋值为较大值
}
if (p!=i)//如果p!=i,注意初始时是等于的,不等于表示最大值不是a[0]是a[p]
{
s=a[i];
a[i]=a[p];
a[p]=s;//这三步交换a[i]和a[p],也就是把当前的最大值放到a[i]
}
printf("%d ",a[i]);
}//十次比较后,按最大到最小依次拍好了顺序,这个叫冒泡排序
printf("\ninput number:\n");
scanf("%d",&n);//输入要插入的数n
for(i=0;i<10;i++)//十次循环
if (n>a[i])//如果n大于a[i],表示可以插入到a[i]位置
{
for(s=9;s>=i;s--)
a[s+1]=a[s];//将a[i]后面小于n的都后移,这个比较难理解你好好想想
break;
}
a[i]=n;//插入
for(i=0;i<=10;i++)//依次输出
printf("%d ",a[i]);
printf("\n");
}

以上是我加的注释,你看看,咱们共同进步吧!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-06-22
#include
void
main()
{
int
i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};//这个不用说了吧
for
(i=0;i<10;i++)//十次循环
{
p=i;//到此p等于i等于0
q=a[i];//到此q等于a[0]=127
for
(j=i+1;j<10;j++)//九次循环
if(q
a[i])//如果n大于a[i],表示可以插入到a[i]位置
{
for(s=9;s>=i;s--)
a[s+1]=a[s];//将a[i]后面小于n的都后移,这个比较难理解你好好想想
break;
}
a[i]=n;//插入
for(i=0;i<=10;i++)//依次输出
printf("%d
",a[i]);
printf("\n");
}
以上是我加的注释,你看看,咱们共同进步吧!
第2个回答  2019-03-13
#include
void
main()
{
int
i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};//这个不用说了吧
for
(i=0;i<10;i++)//十次循环
{
p=i;//到此p等于i等于0
q=a[i];//到此q等于a[0]=127
for
(j=i+1;j<10;j++)//九次循环
if(q
a[i])//如果n大于a[i],表示可以插入到a[i]位置
{
for(s=9;s>=i;s--)
a[s+1]=a[s];//将a[i]后面小于n的都后移,这个比较难理解你好好想想
break;
}
a[i]=n;//插入
for(i=0;i<=10;i++)//依次输出
printf("%d
",a[i]);
printf("\n");
}
以上是我加的注释,你看看,咱们共同进步吧!
相似回答