第一种是比较常见的方法,简单来说关键步骤就两步,第一步是找出元素要插入的位置,第二步是将插入位置的元素以及后面的元素全部往后位移。
#include int main () { int a[11] = {1,2,3,4,5,6,7,8,9,10}; //定义一个数组,可以多放一个元素 int number,i,j; scanf("%d",&number); if(number>a[9]) //如果新加入的元素是最大的,就直接加入到最后一位 a[10]=number; else { for( i=0;i<10;i++) if(a[i]>number) //找到第一个比number大的数 { for(j=10;j>i;j--) a[j+1]=a[j]; //依次往后退一位 a[i]=number; break; } } for(i=0;i<11;i++) printf("%d\n",a[i]); return 0 ; }
第二种是找到插入元素的位置下标,然后将后面元素的下标都加一位,最后在将这个元素放进来。
#include int main() { int data[11]={1,2,3,4,5,6,7,8,9,10}; int m,index; printf("请输入一个整数:"); scanf("%d",&m); if(m<=data[0]) //特殊情况 ,如果m是最小的 则直接放到第一个元素的位置 index=0; else if(m>=data[9]) // 如果m是最大的,直接放到最后一个元素的位置 index=10; else { for(int i=0;i<9;i++) { if(m>=data[i] && m<=data[i+1]) //如果m再两个元素之间,m的下标 index就等于 i+1 index=i+1; break; } } for(int i=8;i>=index;i-- ) data[i+1] = data[i]; data[index] = m; for(int i=0;i<10;i++) { printf("%-5d",data[i]); } return 0; }
参考链接
评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。
发表评论