刷题记录10
数组插入处理
题目描述
已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
输入
第一行,原始数列。 第二行,需要插入的数字。
输出
排序后的数列
代码
#include <stdio.h>
int main(void)
{
int a[10], temp, i;
for(i = 0; i < 9; ++i) //读入数组本该有的数据
{
scanf("%d", &a[i]);
}
scanf("%d", &temp); //要插入的数据
for(i = 0; i < 9; ++i)
{
if(temp < a[i]) //找到插入位置
{
break;
}
}
for(int j = 9; j > i; --j) //把要插入的位置上的元素及后面的元素同意向后移动一位
{
a[j] = a[j-1];
}
a[i] = temp; //把要插入的数据放在移动之后空出的位置
for(int j = 0; j < 10; ++j)
{
printf("%d\n", a[j]);
}
return 0;
}
解题思路
数组本身是有序的,我们只用找到最后输入的数据应该放到的位置,然后把该位置及后面的元素统一向后移动一位;最后把最后的数据方法移动之后空出来的位置上。