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

(C语言)有一个已排好序的数组 要求输入一个数字后 按原来的排序规律将它插入数组

时间:2022-11-23 00:31:49

相关推荐

(C语言)有一个已排好序的数组 要求输入一个数字后 按原来的排序规律将它插入数组

写法一:

这种写法是谭浩强书上的写法:

我先判断是不是最后插得数,如果是最后插得话直接插就可以了。

如果不是在最后插的,那么我挨个进行判断:比如这样一个数组——

{1 4 6 9 13 16 19 28 40 100}

如果我要插入一个10,那么我就找到第一个大于这个数的位置(13,a[4]),然后重新设一个变量j,从i+1开始,一直到最后并且设两个变量temp1,temp2;让temp1等于外层循环的a[i],temp2等于内层循环的a[j],然后让a[i]占据a[j]的位置而a[j]继续寄存,正好a[j+1]是a[i]的下一个元素,所以就这样一直往后延续下去,直到最后一个元素。

CPP

#include<stdio.h>int main(){int i,j;int temp;int a[11]={1,4,6,9,13,16,19,28,40,100};scanf("%d",&temp);int end = a[9];int temp1,temp2;if(temp>end)a[10] = temp;else{for(i = 0;i < 11; i++){if(temp<a[i]){temp1 = a[i];a[i]=temp;for(j = i+1;j<11;j++){temp2 = a[j];a[j] = temp1;temp1 = temp2;}break;}}}for(i = 0 ;i < 11 ; i++){printf("%d,",a[i]);}printf("\n");return 0;}

写法二:

写法二就没有那么啰嗦了,直接上代码吧

#include<stdio.h>int main(){int i,j;int temp;int a[11]={1,4,6,9,13,16,19,28,40,100};scanf("%d",&temp);for(i = 9 ; i>= 0;i--){if(temp<a[i])a[i+1]=a[i];else{a[i+1]=temp;break;}for(int i = 0;i<11;i++)printf("%d ",a[i]);printf("\n");return 0;}

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