已有一个已排好序的数组,要求在主程序中输入一个数,调用函数将其插入数组中,保持数组依然有序?

在主函数中输出插入后的数组。

求代码

main() {
int a[6] = {1,3,6,7,9}; // 已排好序的数组
int i,j,x,t; // 参数
printf("insert data:");
scanf("%d",&x);
for(i=0;i<5;i++) {
if(x<a[i]) // 判断需要插入的位置 a[i]值的前面
break;
}
for(j=5;j>i;j--) { // 将第i个数组数后面的所有数组数都往后递推一位
a[j]=a[j-1]; //交换位置,他是从最后一位开始往前交换的
a[j]=x; //将交换多出来的位置赋值x
}
printf("Now array a:\n");
for(i=0;i<6;i++) { // 重新打印数组
printf("%4d",a[i]);
printf("\n");
}
return 0;
}追问

可以让插入数组和排序在自定义函数里完成吗

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-21
#include <string.h>
/*DeBuf:已排好序的数组*/
/*DeLen:该数组的有效数据长度*/
/*AddData:要加入的数据*/
/*假定数组是递增排序*/
void ChkData(unsigned char *DeBuf, unsigned char DeLen, unsigned char AddData)
{
unsigned char TmpBuf[DeLen];

unsigned char i;

for (i=0;i<DeLen;i++)

{

if (DeBuf[i]>AddData)

{

break;

}

}

memcpy(TmpBuf, DeBuf+i, DeLen-i);

DeBuf[i] = AddData;
memcpy(DeBuf+i+1, TmpBuf, DeLen-i);

}追问

可以让插入数组和排序在自定义函数里完成吗

本回答被提问者和网友采纳
相似回答