目录
C 语言实现
Python 实现
Java 实现
Js 实现
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
C 语言实现
#include <stdio.h>int main() {int a[11] = {1, 4, 6, 9, 13, 16, 19, 28, 40, 100}; // 初始化数组int number, i, j;printf("原始数组是:\n");for (i = 0; i < 10; i++) {printf("%4d", a[i]); // 打印原始数组}printf("\n插入一个新的数字: ");scanf("%d", &number); // 输入新的数字// 找到插入位置for (i = 0; i < 10; i++) {if (a[i] > number) {// 将后面的元素向后移动一位for (j = 10; j > i; j--) {a[j] = a[j - 1];}a[i] = number; // 插入新数字break;}}// 如果新数字大于所有元素,则直接放在最后if (i == 10) {a[10] = number;}// 打印插入后的数组printf("插入后的数组是:\n");for (i = 0; i < 11; i++) {printf("%4d", a[i]);}printf("\n");return 0;
}
- 数组初始化:数组
a
被初始化为一个包含 10 个元素的已排序数组。 - 输入新数字:程序提示用户输入一个新的数字。
- 插入逻辑:
- 遍历数组,找到第一个大于新数字的位置。
- 将该位置及其后面的所有元素向后移动一位,以腾出插入位置。
- 将新数字插入到找到的位置。
- 如果新数字大于数组中的所有元素,则将其放在数组的最后一位。
- 输出结果:最后打印插入后的数组。
Python 实现
def insert_number(sorted_list, number):# 找到插入位置for i in range(len(sorted_list)):if sorted_list[i] > number:sorted_list.insert(i, number) # 在找到的位置插入新数字returnsorted_list.append(number) # 如果新数字大于所有元素,则放在最后def main():sorted_list = [1, 4, 6, 9, 13, 16, 19, 28, 40, 100] # 初始化已排序列表print("原始数组是:")print(sorted_list)number = int(input("插入一个新的数字: ")) # 输入新的数字insert_number(sorted_list, number) # 插入新数字print("插入后的数组是:")print(sorted_list)if __name__ == "__main__":main()
- 函数
insert_number
:这个函数接受一个已排序的列表和一个要插入的数字。它遍历列表,找到合适的位置插入新数字。如果新数字大于列表中的所有元素,则将其添加到列表的末尾。 - 主函数
main
:- 初始化一个已排序的列表
sorted_list
。 - 打印原始列表。
- 提示用户输入一个新的数字。
- 调用
insert_number
函数将新数字插入到列表中。 - 打印插入后的列表。
- 初始化一个已排序的列表
Java 实现
import java.util.Arrays;
import java.util.Scanner;public class InsertNumber {public static void main(String[] args) {int[] a = {1, 4, 6, 9, 13, 16, 19, 28, 40, 100}; // 初始化已排序数组int[] result = new int[11]; // 创建一个新数组以容纳插入后的结果System.arraycopy(a, 0, result, 0, a.length); // 复制原数组到新数组System.out.println("原始数组是:");System.out.println(Arrays.toString(a)); // 打印原始数组Scanner scanner = new Scanner(System.in);System.out.print("插入一个新的数字: ");int number = scanner.nextInt(); // 输入新的数字// 找到插入位置int i;for (i = 0; i < a.length; i++) {if (a[i] > number) {break; // 找到第一个大于新数字的位置}}// 将新数字插入到新数组中for (int j = 0; j < i; j++) {result[j] = a[j]; // 复制原数组的元素}result[i] = number; // 插入新数字for (int j = i; j < a.length; j++) {result[j + 1] = a[j]; // 移动原数组的剩余元素}// 打印插入后的数组System.out.println("插入后的数组是:");System.out.println(Arrays.toString(result));scanner.close(); // 关闭扫描器}
}
- 数组初始化:创建一个已排序的数组
a
,并创建一个新数组result
来存储插入后的结果。 - 打印原始数组:使用
Arrays.toString()
方法打印原始数组。 - 输入新数字:使用
Scanner
类获取用户输入的新数字。 - 插入逻辑:
- 遍历数组
a
,找到第一个大于新数字的位置。 - 将新数字插入到新数组
result
中,并将原数组的元素移动到适当的位置。
- 遍历数组
- 打印结果:最后打印插入后的数组。
Js 实现
function insertNumber(sortedArray, number) {// 找到插入位置for (let i = 0; i < sortedArray.length; i++) {if (sortedArray[i] > number) {sortedArray.splice(i, 0, number); // 在找到的位置插入新数字return;}}sortedArray.push(number); // 如果新数字大于所有元素,则放在最后
}function main() {let sortedArray = [1, 4, 6, 9, 13, 16, 19, 28, 40, 100]; // 初始化已排序数组console.log("原始数组是:");console.log(sortedArray);const number = parseInt(prompt("插入一个新的数字: "), 10); // 输入新的数字insertNumber(sortedArray, number); // 插入新数字console.log("插入后的数组是:");console.log(sortedArray);
}// 执行主函数
main();
- 函数
insertNumber
:这个函数接受一个已排序的数组和一个要插入的数字。它遍历数组,找到合适的位置插入新数字。如果新数字大于数组中的所有元素,则将其添加到数组的末尾。 - 主函数
main
:- 初始化一个已排序的数组
sortedArray
。 - 打印原始数组。
- 使用
prompt
函数提示用户输入一个新的数字,并将其转换为整数。 - 调用
insertNumber
函数将新数字插入到数组中。 - 打印插入后的数组。
- 初始化一个已排序的数组
- 执行主函数:调用
main()
函数以运行程序。