数据插入到有序数组(难度:半颗星)

问题描述:

输入一个有序的整数序列(从小到大排列),然后再输入一个需要插入到数组中的整数,输出插入数据之前和之后的数列。(要保证插入数据之后数列仍然是从小到大排列)。

例如:
输入数列: 1 2 4 5
待插入数据: 3

插入数据后的数据: 1 2 3 4 5

参考代码:

#include <stdio.h>

int arr[100];

int main()
{
    char ch = ' ';
    int i, num, nCount = 0;

    printf("输入一个数列: ");
    while (ch != '\n')
    {
        scanf_s("%d", &arr[nCount++]);
        ch = getchar();
    }

    printf("输入一个要插入的数: ");
    scanf_s("%d", &num);

    printf("插入数据前:\n");
    for (i = 0; i < nCount; i++)
        printf("%d ", arr[i]);
    printf("\n");

    for (i = nCount - 1; i >= 0 && num < arr[i]; i--)
        arr[i + 1] = arr[i];
    arr[i + 1] = num;//把数放到正确的位置
    nCount++;//数组长度+1

    printf("\n插入数据前:\n");
    for (i = 0; i < nCount; i++)
        printf("%d ", arr[i]);
    printf("\n");

    return 0;
}

运行结果:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/yi_ming_he/article/details/71824815