首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

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

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


#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 ……

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

热点排行