我看在把数据向后移以后就可以做下一个i了。
试试在 a[h] = j; 后加一个 break;

解决方案 »

  1.   

    告诉你什么不行,如果你当前的j的数值前面有两个以上的数字小于j,那么就会造成了在把j同时插入这几个地方的情况,所以排序的结果是错误的。所以排序事实上到了45处就会出现错误的结果。如何修改还是你自己来想吧。
      

  2.   

    很简单,
    在a[h]=j;语句后加上
    j=a[i];
    break; 
    就可以解决了!如果你还不清楚的话可以看看下面你的程序每次循环数组a[]中的结果!----------------第1次----------------56 ,    90 ,    65 ,    45 ,    6 ,    4 ,    6 ,    7 ,    9 ,    10 ,----------------第2次---------------------56 ,    65 ,    90 ,    45 ,    6 ,    4 ,    6 ,    7 ,    9 ,    10 ,----------------第3次---------------------45 ,    45 ,    45 ,    56 ,    6 ,    4 ,    6 ,    7 ,    9 ,    10 ,----------------第4次---------------------6 ,    6 ,    6 ,    6 ,    45 ,    4 ,    6 ,    7 ,    9 ,    10 ,----------------第5次---------------------4 ,    4 ,    4 ,    4 ,    4 ,    6 ,    6 ,    7 ,    9 ,    10 ,----------------第6次---------------------4 ,    4 ,    4 ,    4 ,    4 ,    6 ,    6 ,    7 ,    9 ,    10 ,----------------第7次---------------------4 ,    4 ,    4 ,    4 ,    4 ,    6 ,    6 ,    7 ,    9 ,    10 ,----------------第8次---------------------4 ,    4 ,    4 ,    4 ,    4 ,    6 ,    6 ,    7 ,    9 ,    10 ,----------------第9次---------------------4 ,    4 ,    4 ,    4 ,    4 ,    6 ,    6 ,    7 ,    9 ,    10 ,    4