新手,我用的笨方法,大佬轻喷
#include<stdio.h>
int main()
{
int n,i;//i是数组下标
scanf("%d\n",&n);
//输入的数存到数组里
int arr[n+1];
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
//要插入的数
int m;
scanf("%d",&m);
//插在头
if(m<arr[0])
{
for(int x=n;x>0;x--)
{
arr[x] = arr[x-1];
}
arr[0] = m;
}
//插在尾
else if(m>arr[n-1])
{
arr[n] = m;
}
//等价或在中间
else
for(i=0;i<n;i++)
{
if(arr[i]<m && arr[i+1]>=m)
{
for(int x=n;x>i;x--)
{
arr[x] = arr[x-1];
}
arr[i+1] = m;
}
}
//output
for(i=0;i<n+1;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
/*
n=3
arr0 = 2;arr1 = 3; arr2 = 4;
m=1
arr3 = arr2
arr2 = arr1
arr1 = arr0
arr0 = m
i=0
*/
/*
n=4
arr0 = 1; arr1 = 3; arr2 = 4;arr[3]=5
m=2
arr4=arr3=5
arr3=arr2=4
arr2=arr1=3
arr1=2
i=1
*/