目录
题目要求
已有一个已经排好序的序列,输入一个数,将其插入到该序列中,使之仍然保持有序。
解题思路
方法一
- 首先,读入待插入的数然后遍历数组中的数字。
- 比较当前遍历到的数和待插入的数的大小。
- 如果当前遍历到的数大于待插入的数,说明待插入的数应该插入到当前遍历到的数的前面。
- 将当前遍历到的数及其后面的数后移一位,给待插入的数腾出空位。
- 将待插入的数放入腾出的空位中。
- 结束循环。
- 输出插入后的序列。
方法二
- 首先,读入待插入的数字然后将其放在数组的最后一个有效位置。
- 对数组进行排序即可实现输入一个数,将其插入到该序列中,使之仍然保持有序的功能。
代码
方法一
#include <stdio.h>
void main() {
int a[20]= {3,7,10,12,18,20};
int x,n=6,i;
printf("请输入需要插入的数字:");
scanf("%d",&x);
i=n-1;
while(i>=0&&a[i]>x) {
a[i+1]=a[i];
i--;
}
a[i+1]=x;
n++;
for(i=0; i<n; i++)
printf("%4d",a[i]);
}
方法二
#include <stdio.h>
void main() {
int a[20]= {3,7,10,12,18,20};
int i,j,t;
printf("请输入需要插入的数字:");
scanf("%d",&a[6]);
for(i=0; i<=5; i++)
for(j=i+1; j<=6; j++) {
if(a[i]>a[j]) {
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
for(i=0; i<7; i++)
printf("%d ",a[i]);
}