<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>结果展示

 

技术
©2019-2020 Toolsou All rights reserved,
TypeScript:函数类型接口8道大厂指针笔试题让你秒杀指针!!!MySQL 日期时间加减mysql 查询条件之外的数据_mysql 查询符合条件的数据查linux的操作系统版本,如何查看Linux操作系统版本?将String类型转换成Map数据类型使用uuid做MySQL主键,被老板,爆怼一顿C语言中的字符串函数和字符函数linux服务器中毒排查--基础篇C# ASCII码字符转换