C中对冒泡排序法排序完成的数组中插入新的数再次排序输出

用冒泡排序法将键盘上输入的20个数排序后存入数组,然后输入一个新的数插入数组,保持原序不变输出这21个数(我写了一部分,但是插入新的数我不会)图片说明图片

 for (int i = 0; i < 20; i++)
{
    if (a[i] >= x) {
            for (int j = 20; j >= i; j++)
                    a[j + 1] = a[j];
                a[i] = x; }
}

插入新数据就变成了插入排序,

//假设a[N+1]中前N个数已经有序,
int i = 0;
//将待排序数据保存到临时变量中
int tmp = a[N];
//查找插入的位置
for(i = N-1 ; i >= 0; i++){
   if(a[i] > tmp){
          a[i+1] = a[i];
     }else{
        //找到了插入位置,插入位置为i+1
        a[i+1] = tmp;
        break;//跳出循环
     }
}

我不写代码,只说思路。比方现在有一对人20,从高到底,已经排好了,但是又来了一个人,如果他比所有人高,那就让他站在最前面,如果他比所有人
低,那就让他站在最后面。但是偏偏这个人不高不低,现在你是那个排序的人,你当然是要把这个人领导队伍开头一个一个比较(队伍是由高到低),直到
发现他比比较的人低或者相同的时候,说明他应该站在这个人后面,然后你在吩咐后面的人,一人往后诺一个位子,这样这个队伍就变成21人的有序队列
了。