第20-21章项目3-有序数组中插入数据

问题及代码:

/*
Copyright(c)2018,CSDN学院行者-
All rights reserved.
文件名称:main.c
作者:乔帅
完成日期:2018年3月15日
版本号:v1.0

问题描述:有序数组中插入数据
输入描述:输入一个数
程序操作:将输入的数插入到原本升序的数组中
程序输出:输出插入数字的数组
*/
#include<stdio.h>

int main()
{
    int a[10];
    int n , i;
    for(i = 0 ; i < 9 ; i++)
        scanf("%d",&a[i]);
    printf("输入一个数,按顺序插入到数组中:");
    scanf("%d",&n);
    i = 8;
    while(i > 0 && a[i] > n ){
        a[i+1] = a[i];
        i--;
    }
    i++;
    a[i] = n;
    for(i = 0 ; i < 10 ; i++){
        printf("%d\t",a[i]);
    }
    printf("\n");
    return 0;
}

运行结果:


知识点总结:

1.顺序数组中插入数字

学习心得:

继续努力,积累代码!!!

### 回答1: 好的,这是一个算法问题,可以给你提供一个简单的实现: 1. 首先找到插入的位置,可以使用二分查找来查找插入位置,这样可以减少比较次数; 2. 然后将插入位置之后的所有元素向后移动一位; 3. 最后,在插入位置处插入插入的元素。 以下是代码示例(使用 Python 语言): ``` def insert_into_array(arr, num): """ 将 num 插入有序数组 arr ,并使插入后的数组仍为有序数组 """ low, high = 0, len(arr) - 1 while low <= high: mid = (low + high) // 2 if arr[mid] == num: break elif arr[mid] < num: low = mid + 1 else: high = mid - 1 # 找到插入位置 insert_index = mid if arr[mid] == num else low # 后移元素 for i in range(len(arr) - 1, insert_index, -1): arr[i] = arr[i - 1] # 插入元素 arr[insert_index] = num return arr # 测试 arr = [1, 2, 4, 5, 7, 8, 10, 12, 15, 18] num = 9 new_arr = insert_into_array(arr, num) print(new_arr) # [1, 2, 4, 5, 7, 8, 9, 10, 12, 15, 18] ``` ### 回答2: 要将一个数插入到一个已有10个元素的有序数组,并保持数组有序,可以使用插入排序算法。插入排序算法的基本思想是将一个待插入的元素不断与已排序的元素进行比较,找到合适的位置插入。 具体步骤如下: 1. 声明一个有10个元素的数组,并初始化已排序的元素; 2. 输入插入的数; 3. 从数组的最后一个元素开始循环,直到找到第一个小于待插入数的元素; 4. 将所有大于待插入数的元素往后移动一个位置; 5. 将待插入插入到空出的位置; 6. 输出最终的有序数组。 下面是一个使用Python语言编写的实例代码: ```python def insert_element(arr, num): # 从数组的最后一个元素开始循环,直到找到第一个小于待插入数的元素 for i in range(len(arr)-1, -1, -1): if arr[i] <= num: # 将所有大于待插入数的元素往后移动一个位置 arr.insert(i+1, num) return arr else: # 如果当前元素大于待插入数,将当前元素往后移动一个位置 arr[i+1] = arr[i] # 如果待插入数是最小的,将其插入到数组的第一个位置 arr.insert(0, num) return arr # 初始化一个有10个元素的有序数组 sorted_arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] # 输入插入的数 num = int(input("请输入插入的数:")) # 插入元素并输出结果 result = insert_element(sorted_arr, num) print("插入后的有序数组:", result) ``` 通过以上代码,我们就可以将一个数插入到一个有序的有10个元素的数组,并使插入后的数组仍为有序数组。 ### 回答3: 编写一个程序,将一个数插入到一个有序的有10个元素的数组,并使插入后的数组仍为有序数组。 首先,我们需要创建一个大小为11的数组来存储原有有序数组和要插入的数。定义一个变量num来表示要插入的数。 然后,我们利用循环遍历原有数组,找到插入位置。在循环,我们通过比较当前元素与插入数的大小来确定插入位置。当找到插入位置时,我们将插入插入到数组,并将后面的元素依次后移。 最后,数组就有了插入数,并且依然保持有序。我们可以输出插入后的数组,供后续使用。 以下是一个示例的Python代码实现: ``` def insert_num(arr, num): arr.append(0) i = len(arr) - 2 while i >= 0 and arr[i] > num: arr[i + 1] = arr[i] i -= 1 arr[i + 1] = num # 示例 arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] num = 6.5 insert_num(arr, num) print(arr) ``` 以上代码,我们将要插入的数6.5插入有序数组[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],并输出插入后的数组[1, 2, 3, 4, 5, 6, 6.5, 7, 8, 9, 10]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值