C语言经典题目——将一个数插入已排序好的数组中

<1>题目介绍

有一个已排好序的数组,要求输入一个数后,按原来的规律将他插入数组中,例如将3插入

1 ,2 ,4 ,7 ,8, 9 ,10 ,11, 13, 100中,得到1 ,2 ,3,4 ,7 ,8, 9 ,10 ,11, 13, 100

<2>思路分析

  • 将输入的数字一一和数组中的元素对比
  • 如果没有比他大的,就将他放在数组的最后一个位置
  • 如果他在数组中某两个数之间,就将大于它的数全部向后移动一位

<3>代码实现

int main()
{
	int arr[11] = { 1 ,2 ,4 ,7 ,8, 9 ,10 ,11, 13, 100 };
	int input = 0;
	scanf("%d",&input);
	int i,j;
	for (i = 0; i < 10; i++)
	{
		if (input >= arr[9])
		{
			arr[10] = input;
		}
		else 
		{
			 if (input<=arr[i])									
			 {
				 int tmp1 = arr[i];								
				 arr[i] = input;								
				 for (j = i + 1; j < 11; j++)
				 {
					 int tmp2 = arr[j];							
					 arr[j] = tmp1;							    
					 tmp1 = tmp2;								 
				 }
				 break;
			 }
		}
	}
	for (i = 0; i < 11; i++)
	{
		printf("%d ",arr[i]);
	}
	return 0;
}

上面代码的核心部分在于下面

if (input<=arr[i])							//假设这里的input = 3,则i = 2
{
	int tmp1 = arr[i];						//记录tmp1 = arr[2] = 4
	arr[i] = input;							//让arr[2] = input = 3
	for (j = i + 1; j < 11; j++)
	{
		int tmp2 = arr[j];					//记录tmp2 = arr[3] = 7
		arr[j] = tmp1;						//让arr[3] = tmp1 = arr[2] = 4
		tmp1 = tmp2;						//让tmp1 = tmp2 = arr[3] = 7
	}
	break;
}

我将input = 3作为演示过程写出来了,后面只需要执行完for循环就能将整个插入过程执行完毕

<4>结果展示

C语言经典题目——将一个数插入已排序好的数组中_第1张图片

 

你可能感兴趣的:(C语言经典100题,c语言,蓝桥杯,开发语言)