有一个已经排好序的数组,要求输入一个数后,按原来顺序的规律将它插入数组中

有一个已经排好序的数组,要求输入一个数后,按原来顺序的规律将它插入数组中

【答案解析】

将数据插入到已排序的序列中,只需两步即可:

  1. 找待插入元素在数组中的插入位置
  2. 插入元素

具体如下:

注意:极端情况下,end可能会被减为-1,比如在上述序列中插入0

【代码实现】

#include<stdio.h>
int main()
{
	int num = 0;
	int array[10] = {1,2,3,4,5,6,7,8,9};

	printf("请输入一个整数:");
	scanf("%d", &num);

	printf("原数组序列为:\n");
	for (int i = 0; i < 9; ++i)
		printf("%d ", array[i]);
	printf("\n");

    // 数组为升序
    // 在数组中找待插入元素的位置,具体找的方式为:
    // 从后往前依次与数组中元素进行比较,如果要插入元素num比end位置数据小,则num一定插在end位置之前
    // 因此将end位置数据往后搬移一个位置
    // 如果num大于end位置元素或者end已经在区间最左侧,则位置找到
    // 最后将新元素插入到end+1的位置
	int end = 8;
	while (end >= 0 && num < array[end])
	{
		array[end+1] = array[end];
		end--;
	}

	array[end + 1] = num;
	printf("插入元素%d之后的结果为:\n", num);
	for (int i = 0; i < 10; ++i)
		printf("%d ", array[i]);
	printf("\n");
	return 0;
}

【结果截图】

有一个已经排好序的数组,要求输入一个数后,按原来顺序的规律将它插入数组中

猜你喜欢

转载自www.cnblogs.com/vs2019/p/13385499.html