冒泡排序求纠错解决方案
冒泡排序求纠错
请问错在哪了???我郁闷.
------解决方案--------------------
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/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循环就会终止,冒泡排序就没有作用了。