900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 已有一个已排好序的数组 要求输入一个数后 按原来顺序的规律将它插入数组中。

已有一个已排好序的数组 要求输入一个数后 按原来顺序的规律将它插入数组中。

时间:2021-09-11 07:03:16

相关推荐

已有一个已排好序的数组 要求输入一个数后 按原来顺序的规律将它插入数组中。

笨办法:

#include <stdio.h>int main(){int a[11];int i,j,t;printf("请先输入10个整数(中间用空格间隔):\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}printf("\n");for(i=0;i<9;i++){for(j=i+1;j<10;j++ ) //每一遍都与当前a[i]比较{if (a[i]>a[j]) //大的后移{t=a[i];a[i]=a[j];a[j]=t ;}}}printf("原先这10个数由小到大排列为:\n"); for(i=0;i<10;i++){printf("%d ",a[i]); }printf("\n\n");printf("请输入要插入的数:");int num;scanf("%d",&num);printf("\n");if(num>a[9]){printf("经过判断有:%d<%d\n",a[9],num); a[10]=num;}else{for(i=0;i<10;i++){if(a[i]>num){if((i>0)&&(i<=9)){printf("经过判断有:%d<%d<%d\n",a[i-1],num,a[i]);for(j=9;j>=i;j--){a[j+1]=a[j];}a[i]=num;}else{printf("经过判断有:%d<%d\n",num,a[i]); for(j=9;j>=i;j--){a[j+1]=a[j];}a[0]=num; }break;}}}printf("\n");printf("最终这11个数由小到大排列为:\n"); for(i=0;i<11;i++){printf("%d ",a[i]); }return 0;}

更简单的办法:用两次排序(冒泡法或选择法)

#include <stdio.h>int main(){int a[11];int i,j,t;printf("请先输入10个整数(中间用空格间隔):\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}printf("\n");for(i=0;i<9;i++){for(j=i+1;j<10;j++ ) //每一遍都与当前a[i]比较{if (a[i]>a[j]) //大的后移{t=a[i];a[i]=a[j];a[j]=t ;}}}printf("原先这10个数由小到大排列为:\n"); for(i=0;i<10;i++){printf("%d ",a[i]); }printf("\n\n");printf("请输入要插入的数:");int num;scanf("%d",&num);printf("\n");a[10]=num;//下面采用冒泡排序法! for(j=0;j<10;j++){for(i=0;j<10-i;i++){if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}} }printf("\n");printf("最终这11个数由小到大排列为:\n"); for(i=0;i<11;i++){printf("%d ",a[i]); }return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。