先来一个简单的:
假如有数组:a[10] = {11,22,33,44,55,66,77,88,99},
现在需要插入一个元素70
要求插入以后的造型为:a[10] = {11,22,33,44,55,66,70,77,88,99},
分析:
1,从定义是的造型就可以知道,末尾留了一个位置,默认为0的元素,没写出来。
2,实际上是要把比插入元素值大的元素整体后移一位,腾出一个位置。
那么此时有两种挪法:
方法一:从第一个开始动。
void main()
{
int a[10] = {
11,22,33,44,55,66,77,88,99},insert_num = 70,i,j,temp;
for(i=0;i<10;i++)
{
if(insert_num <= a[i])
{
temp = a[i];
a[i] = insert_num;
for(j = i+1;j<10;j++)
{
temp = temp^a[j];
a[j] = temp^a[j];
temp = temp^a[j];
}
break;
}
}
for(i=0;i<10;i++)
{
printf("%5d",a[i]);
}
getchar();
}
方法二:从最后一个开始动
int main()
{
int a[10] = {
11,22,33,44,55,66,77,88,99};
int key =