先来分析思路: 已经排好序的数组,有两种情况,一种是顺序,一种是逆序,由于该数组是自己给出的,所以我们不妨将该数组的顺序设为顺序。
1.我们需要创建一个顺序数组(a[ ]),创建时要注意,我们要确保数组的元素总数比初始化的元素个数多一(因为此处是输入一个数)
2.然后我们应当输入一个数,有三种情况:
(1)第一种,这个数大于整个数组的所有元素,由于是顺序排列,所以我们可以直接将该数给直接赋为最后一个元素
(2)第二种是小于最小的元素,第三种是输入的数处于元素大小中间的,在这两种情况下,我们首先要找到比输入的数(num)大的元素,然后用输入的数(num)来代替,而后面的数依次顺延,知道数组的末尾。所以我们可以将这两种情况一并考虑。
接下来对第二种情况的分析:
- 首先我们将第一个大于num的元素a[j]给找出来
a[j-1] | (a[j]---->n1)<-------num | (n2<----a[j+1])<------n1 n1<-------n2 |
然后用一个整形变量n1,将a[j]的值赋给n1,然后将num赋给a[j],以完成占位,然后a[j]的仅存在于n1中,我们需要将其赋给a[j+1],但是又要将a[j+1]的值给取出来,当作下一次循环赋值的初始值,我们就可以有 n2=a[j+1]; a[j+1]=n1;n1=n2;就可以将后面的数依次后延,然后再用循环,将数组的值输出即可。下面是详细的代码