C语言帮忙~

来源:百度知道 编辑:UC知道 时间:2024/05/30 13:28:09
以下是采用插入算法对将一个数据插入到一个有序的数组中,使数组仍然有序的 C
语言代码片段,请问在空白处需要添加的代码是 ( )。 (选择一项)
void charu(int * num,int N,int insert) {
int i,j;
for(i = 0;i<N;i++) {
if(num[i]<insert) {
break;
}
}
for(空白处) {
num[j] = num[j-1];
}
num[i] = insert;
}
void mian ( ) {
int num[5] = {55,35,25,15};
int insert = 45;
charu(num,4,insert);
}

a) j = N; j > i; j--
b) j = N+1; j > i; j--
c) j = N; j > 0; j--
d) j = N+1; j > 0; j--
选A,为什么呢?
不选A? 那B为什么对啊,并管选啥谁能讲讲明白啊~

这题确实选a,数组的下标是从0开始的,则第n个数的下标是n-1,在num[i]插入数字就是把num[i]以后的数字往后移一位,必须从组后一个位置开始,不然会造成数据的丢失

选A
for(i = 0;i<N;i++) {
if(num[i]<insert) {
break;
}
}
先判断插入位置
for( j = N; j > i; j--)
把n后的数往后串,空出位置
num[i] = insert;将数插入到这里

选b,不然将会丢失插入位置的数据。运行一下就知道了。

选a.原数据共n个数,最后一个数的索引值为n-1;插入后的数据共n+1个数,最后一个数的索引值为n.算法是把i到n-1的数都后移一位.