A:向一个有序数组中插一个数,使该数组保持有序
1:假如有一个有序数组如下:
a[7]={1,2,3,6,8,9,NULL};//最后一个元素为空值.
现在要将 "5",这个值插入到这个数组中.并且仍保持数组的值是从小到大的顺序排列.
那么插入后情况如下:
{1,2,3,[5],6,8,9} //那么6,8,9都向后移动一个位置,
原来的 NULL的位置, 被9占用.
原来的 9的位置, 被8占用.
原来的 8的位置, 被6占用.
原来的 6的位置, 插入5.
升序具体步骤:
1:将待插入的数5与数组a中倒数第一个元素9比较, 9>5,则9向后移一位
2:将待插入的数5与数组a中倒数第二个元素8比较, 8>5,则8向后移一位
3:将待插入的数5与数组a中倒数第三个元素6比较, 6>5,则6向后移一位
4:将待插入的数5与数组a中倒数第四个元素3比较, 3<5,则比较结束.
将5插入到 元素3后的一个位置
具体实现:
#define Index 7
int a[7]={1,2,3,6,8,9,NULL};
int temp=5;
int i;
for(i=Index-2;(i>=0 )&&(a[i]>temp);--i)
{
a[i+1]=a[i];
}
a[i+1]=temp;