读书人

新手请问有关问题.插入排序中遇到的

发布时间: 2013-01-07 10:02:25 作者: rapoo

新手请教问题.插入排序中遇到的.
请先不要管插入排序实现的如何,我想知道为什么注释的地方和我预想的不一样?
谢谢大家了.


#include <stdio.h>

int main() {
int n[10] = {2,3,4,5,6,8,11,22,33,66};
int x = 23;
int m[] = {};
int i;
int b = 0;
for (i=0; i<10; i++) {
printf("%d\n",n[i]); //这里为什么是 2,3,4,5,6,8,11,22,33,[23注意这里],66 我预想着是33
if (n[i] > x) {
if (b > 0) {
m[i+1] = n[i];
} else {
m[i] = x;
b = 1;
i--;//注意这里
}
} else {
m[i] = n[i];
}
}

int k;
for (k=0; k<11; k++) {
printf("%d",m[k]);
printf("\t");
}
return 0;
}

[解决办法]
引用:
引用:引用:引用:个人认为
printf("%d\n",n[i]);
结果应该是: 2,3,4,5,6,8,11,22,33,33,66
为什么会有两个33呢,当数组n到33的时候, n[i] > x 此时b == 0 , 所以程序跑进
else ……

恩,是的。在定义的时候有初值,数组的长度就是默认为初始值的长度

读书人网 >C语言

热点推荐