鱼C论坛

 找回密码
 立即注册
查看: 1526|回复: 3

[已解决]题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

[复制链接]
发表于 2022-4-27 14:42:21 From FishC Mobile | 显示全部楼层 |阅读模式
30鱼币
#include<stdio.h>
int main()
{
    int a[11]={1,4,6,9,13,16,19,28,40,100};
    int temp1,temp2,number,end,i,j;
    printf("原始数组是:\n");
    for(i=0;i<10;i++)
        printf("%4d",a[i]);
    printf("\n插入一个新的数字: ");
    scanf("%d",&number);
    end=a[9];
    if(number>end)
        a[10]=number;
    else
    {
        for(i=0;i<10;i++)
        {
            if(a[i]>number)
            {
                temp1=a[i];
                a[i]=number;
                for(j=i+1;j<11;j++)//从这里
                {
                    temp2=a[j];
                    a[j]=temp1;
                    temp1=temp2;//到这里为什么要这样写,求助
                }
                break;//这里又为啥要用break语句呢
            }
        }
    }
    for(i=0;i<11;i++)
        printf("%4d",a[i]);
    printf("\n");
    return 0;
}
最佳答案
2022-4-27 14:42:22
for(j=i+1;j<11;j++)//从这里
                {
                    temp2=a[j];
                    a[j]=temp1;
                    temp1=temp2;//到这里为什么要这样写,求助
                }
要把一个数插入数组,当然要把排在它后面的数都后移。
例:数组:1,5,8,9.  插入3,一眼就看出3应该在第二位,但如果只是把第二位改为3,数组不就变成了1,3,8,9.这就不叫插入了。

break是放在if里面的,而if的作用就是找到新的数字该插入的位置,既然找到了位置,上面操作也把数组调整好了,自然没有继续遍历的必要

最佳答案

查看完整内容

要把一个数插入数组,当然要把排在它后面的数都后移。 例:数组:1,5,8,9. 插入3,一眼就看出3应该在第二位,但如果只是把第二位改为3,数组不就变成了1,3,8,9.这就不叫插入了。 break是放在if里面的,而if的作用就是找到新的数字该插入的位置,既然找到了位置,上面操作也把数组调整好了,自然没有继续遍历的必要
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-27 14:42:22 | 显示全部楼层    本楼为最佳答案   
for(j=i+1;j<11;j++)//从这里
                {
                    temp2=a[j];
                    a[j]=temp1;
                    temp1=temp2;//到这里为什么要这样写,求助
                }
要把一个数插入数组,当然要把排在它后面的数都后移。
例:数组:1,5,8,9.  插入3,一眼就看出3应该在第二位,但如果只是把第二位改为3,数组不就变成了1,3,8,9.这就不叫插入了。

break是放在if里面的,而if的作用就是找到新的数字该插入的位置,既然找到了位置,上面操作也把数组调整好了,自然没有继续遍历的必要
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-27 15:03:35 | 显示全部楼层
风车呼呼呼 发表于 2022-4-27 14:53
要把一个数插入数组,当然要把排在它后面的数都后移。
例:数组:1,5,8,9.  插入3,一眼就看出3应该 ...

temp1=temp2;这里是为啥哇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-27 15:11:37 | 显示全部楼层
kkk聪 发表于 2022-4-27 15:03
temp1=temp2;这里是为啥哇

你模拟一遍后移的交换过程,最多走两个循环就知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 18:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表