第一种是比较常见的方法,简单来说关键步骤就两步,第一步是找出元素要插入的位置,第二步是将插入位置的元素以及后面的元素全部往后位移。

#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;     }    

参考链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。