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

2024-12-02 18:17:58
推荐回答(3个)
回答1:

#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{
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");
}

以上是我加的注释,你看看,咱们共同进步吧!

回答2:

第一种方法

main(){
int i,j,p,n,s,a[11]={127,6,3,28,68,87,105,54,162,18};
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++) 
if(a[i]<=a[j]) 
p=a[i],a[i]=a[j],a[j]=p;
}
printf("输入参与排序的数字:");
scanf("%d",&n);
a[10]=n;
for(i=0;i<11;i++)if(a[10]>a[i])
p=a[i],a[i]=a[10],a[10]=p;
for(i=0;i<11;i++)
printf("%d ",a[i]);
}
第二中种方法
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;q=a[i]; 
for(j=i+1;j<10;j++) 
if(q{p=j;q=a[j];} 
if(p!=i) 
{ s=a[i]; 
a[i]=a[p]; 
a[p]=s; 

printf("%d ",a[i]); 

printf("\ninput number:\n"); 
scanf("%d",&n); 
for(i=0;i<10;i++) 
if(n>a[i]) 
{
for(s=9;s>=i;s--) 
a[s+1]=a[s]; 
break;
}
a[i]=n; 
for(i=0;i<=10;i++) 
printf("%d ",a[i]); 
printf("\n");
}

回答3:

/*整体思路是先将输入的十个数从小到大排列好,然后再将单独输入的数与数组比较大小并将其插入数组中,这部分是关键。需要注意的是我们在刚开始时将数组长度定义为11,就是为后面插入一个数预留的空位*/

#include

void main()

{

int a[11];                  /*数组长度为11*/

int n=10,i,j,k,t;

int x,count;

printf("请输入十个整数:\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<9;i++)            /*用选择法将输入的十个数排列好*/

{

k=i;

for(j=i+1;j<10;j++)

if(a[j]

k=j;

if(k!=i)

{

t=a[i];

a[i]=a[k];

a[k]=t;

}

}

for(i=0;i<10;i++)             /*输出排列好的十个数*/

printf("%d ",a[i]);

printf("\n");

printf("请输入任意一个整数:\n");

scanf("%d",&x);

for(i=0;i<10;i++)           /*将输入的数x与数组元素比较大小*/ {

if(x

{

for(j=10;j>i;j--)

a[j]=a[j-1];

a[i]=x;

break;

}

}

for(i=0;i<11;i++)           /*输出最后结果*/

printf("%d ",a[i]);

printf("\n");

}