题目 1025: [编程入门]数组插入处理

发布时间 2023-04-06 21:08:17作者: ha_1007

题目描述

已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。

输入格式

第一行,原始数列。 第二行,需要插入的数字。

输出格式

排序后的数列

样例输入

1 7 8 17 23 24 59 62 101
50

样例输出

1
7
8
17
23
24
50
59
62
101

 

解题思路:这是常规思路,类似按身高排队一样,已经排好的队,你想插进去,找到比你矮的和比你高的前后两个人,之后的人往后退一步就行了。

首先是输入只含有9个元素的数组a[10],用for循环依次输入。接着输入插入的数字x,将x与数组元素比较,当a[i]<=x<=a[i+1]时,记录x应该插入的位置t=i+1。但是插入x之前要把元素往后移位,从后往前直到位置t,最后把x赋值给a[t],输出排好的a[10]。

注意事项:注意移位从后往前,不然从前往后会使数据丢失。找插入位置时注意break退出遍历循环,不然肯定是最后面。

#include <stdio.h>
 
int main()
{
    int a[10];
    int i=0;
    int t;
    for(i=0;i<9;i++)
    {
        scanf("%d",&a[i]);
    }
    a[9]=0;
    int x;
    scanf("%d",&x);
    for (i=0;i<10;i++)
    {
        if(x>=a[i] && x<=a[i+1])
        {
            t=i+1;
            break;
        }
    }
//  printf("%d\n",t);
    for (i=9;i>t;i--)
    {
        a[i]=a[i-1];
    }
    a[t]=x;
 
    for (i=0;i<10;i++)
    {
        printf("%d\n",a[i]);
    }
    return 0;
}