将一个任意一个整数插入到已排好序得数组中,插入后,数组中的数仍然保持有序。
要求:
1整型数组直接赋值的方式初始化,要插入的数组用scanf函数输入;
2算法过程用指针处理
3输出原始数组数据以及插入后的数组数据,并加以说明。
快点。。
根据你的要求,已经完成:
说明:
程序的核心思想就是:首先定位x在数组中的位置(利用二分查找实现)pos,然后根据位置,对数组元素依次进行逆序移动,最后腾出1个空间,插入x。程序配有详细注释,以帮助LZ理解程序思想。
1 程序中,x即为待插入的整数。
2 本程序函数分工明确:
Locate_X():定位x在数组中的位置。
Insert_X():插入到数组中。
pirint_Arr():打印数组。
代码如下:
#include<stdio.h>程序当场完成,花了1个小时的时间。绝对原创,纯手打!VC6.0调试通过,至于截图,LZ自己运行看吧。
有问题请追问。
#include<stdio.h>
int main()
{
int num,now[100];//num为要输入的数,now数组保存
int len = 5;//假设数组初始长为5
int i, j;
for(i = 0; i<len; i++)
scanf("%d",&now[i]);
for(i = 0; i<len; i++)
printf("%d ",now[i]);
printf("\n");
while(scanf("%d",&num)!=EOF)
{
int *p = now; //p指向数组的首地址
int idx = len;
for(i = 0; i<len; i++)
printf("%d ",*(p+i));
printf("\n");
while(*p>0&&*p<num)
p++;
int *q = p;
while(p+idx>q)
{
*(p+idx) = *(p+idx-1);
idx--;
}
p = q;
*p = num;
len++;
for(i = 0; i<len; i++)
printf("%d ",now[i]);
printf("\n");
}
return 0;
}