对于有序的数组插入一个数,我们可以想到可以直接插入和尾插
而无论哪一种方法,都需要考虑要插入的数是第一个还是最后一个。
可以看下图分析
我们还需要分析要插入的数在最前面和最后面的情况
直接插入分析完毕!具体代码如下:
#include<stdio.h>
int main()
{
int arr[10] = { 0 };
int i, j, k, n;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
scanf("%d", &k);
for (i = 0; i < n; i++)
{
if (k <= arr[n - 1]&&k>arr[0])
{
if (arr[i] <= k && arr[i + 1] >= k)
j = i+1;
}
else if (k > arr[n - 1])
{
j = n;
break;
}
else
{
j = 0;
break;
}
}
for (i = n+1; i >= 0; i--)
{
if (i > j)
{
int tmp = arr[i];
arr[i] = arr[i - 1];
arr[i - 1] = arr[i];
}
else
{
arr[j] = k;
break;
}
}
for (i = 0; i < n + 1; i++)
{
printf("%d ", arr[i]);
}
}
尾插的分析类似,别忘记前边和后边就好。