0%

在有序数组中插入一个数字

文章时效性提示

本文发布于 496 天前,部分信息可能已经改变,请注意甄别。

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
void Insert(int* arr, int input)
{
    int i=0;
    if (arr[8]>input) {
        for (i=0; i<10; i++)
        {
            if (arr[i]>input)
            {
                int j;
                for (j=9; j>i; j--)
                {
                    arr[j] = arr[j-1];
                }
                arr[i] = input;
                break;
            }
        }
    }
    else
    {
        arr[9] = input;
    }
}

int main()
{
    int arr[10] = {111,222,333,444,555,666,777,888,999};
    int input;
    printf("请输入要插入的数字:->");
    scanf("%d",&input);
    Insert(arr,input);
    int i;
    for (i=0; i<10; i++)
    {
        printf("%d ",arr[i]);
    }
    return 0;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#define ARR_LENGTH 10
void Insert(int* arr, int input)
{
    int i=0;
    if (arr[ARR_LENGTH-2]>input) {
        for (i=0; i<ARR_LENGTH; i++)
        {
            if (arr[i]>input)
            {
                int j;
                for (j=ARR_LENGTH-1; j>i; j--)
                {
                    arr[j] = arr[j-1];
                }
                arr[i] = input;
                break;
            }
        }
    }
    else
    {
        arr[ARR_LENGTH-1] = input;
    }
}
int main()
{
    int arr[ARR_LENGTH] = {111,222,333,444,555,666,777,888,999};
    int input;
    printf("请输入要插入的数字:->");
    scanf("%d",&input);
    Insert(arr,input);
    int i;
    for (i=0; i<ARR_LENGTH; i++)
    {
        printf("%d ",arr[i]);
    }
    return 0;
}