读书人

冒泡排序求纠错解决方案

发布时间: 2012-10-13 11:38:17 作者: rapoo

冒泡排序求纠错

C/C++ code
#include "stdafx.h"#include "stdio.h"int main(){    int arry[100];    char mark;    int i,j,k,x;    int v;    int flag = 0;    printf("please input your number that you want to compare,and please add n after the last number!\n");    for(i = 0;;i++)    {        scanf("%d%c",&arry[i],&mark);        //判断结束        if (99 == i)        {            printf("please in 100 control numbers!\n");            flag = 1;            break;        }        else if ('n' == mark)        {            break;        }        do         {            x = 0;            for (j = 0;j+1 < i;j++)            {                if (arry[j] > arry[j+1])                {                    k = arry[j +1];                    arry[j + 1] = arry[j];                    arry[j] = k;                    x++;                }            }        } while ( x != 0);    }    if (1 == flag)    {        printf("Input Wrong!\n");    }    else    {        printf("Sorted arry is this!\n");        for (j = 0;j < i;j++)            printf("%d\n",&arry[j]);        printf("%d\n",&arry[i]);            }}


请问错在哪了???我郁闷.

[解决办法]
do
{
x = 0;
for (j = 0;j+1 < i;j++)
{
if (arry[j] > arry[j+1])
{
k = arry[j +1];
arry[j + 1] = arry[j];
arry[j] = k;
x++;
}
}
} while ( x != 0);

你的冒泡排序,初始化x为0,那么j+1<i不会成立,那么x++就不会执行,最后x还是为0,那么do ...while循环就会终止,冒泡排序就没有作用了。

读书人网 >C语言

热点推荐