哪个网站做马代路线好友情链接的四个技巧
本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。
输入格式:
输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。
输出格式:
在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。
输入样例:
5
1 2 4 5 7
3
输出样例:
1 2 3 4 5 7
第一次写,由于本人比较菜,所以写的很长,将就着看看:
#include<stdio.h>
int main(){int i,j=0,k,s;int a[10000];int t=0;int f=0;scanf("%d",&k);for(i=0;i<k;i++){scanf("%d",&a[i]);} scanf("%d",&s);if(k==0){//考虑特殊情况,k=0没有数字的时候printf("%d ",s);}else {for(i=0;i<k;i++){if(a[i]<s&&a[i+1]>s){k=k+1;for(j=k-1;j>i;j--){a[j]=a[j-1];//每个数字往后移动一位}a[i+1]=s;f=1;} }if(f==0){if(a[0]>s){//插在头 printf("%d ",s);for(i=0;i<k;i++){printf("%d ",a[i]);}}else if (a[k-1]<s){//插在尾 for(i=0;i<k;i++){printf("%d ",a[i]);}printf("%d ",s);}} else for(i=0;i<k;i++){printf("%d ",a[i]);}}return 0;}
看过CSDN中大佬写的代码,真的自愧不如,只有我的一半量。。
转载自https://blog.csdn.net/xyt02201608/article/details/80260559
#include<stdio.h>
int main(){int i,j,k,n,s;int a[10000];int t=0;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}scanf("%d",&k);i=0;while(i<n&&k>a[i]){//避免了插在头尾的单独讨论i++;}//用i记录下应该插入的位置for(j=n-1;j>=i;j--){//这个思维很巧妙,避免了插在头尾的单独讨论,//将i后面的往后移一位,从最后开始a[j+1]=a[j];}a[i]=k;//插入for(i=0;i<n+1;i++){//因为只插入一个,所以n变成n+1printf("%d ",a[i]);}return 0;}