黑马程序员技术交流社区
标题:
冒牌排序问题
[打印本页]
作者:
张大海
时间:
2013-4-14 15:29
标题:
冒牌排序问题
本帖最后由 张大海 于 2013-4-14 21:33 编辑
int[] score = { 10,20,30,40,50,60,70};
//int[] score = { 70,60,50,40,30,2,1};
//int[] score = {8,12,2,78,35,45,56,69,1,89,57,32,45,78 };
int i,j;
for ( i=0;i<score .Length -1;i++)
{
for ( j = 0; j < score.Length - j - 1;j ++ )
{
if (score [j ]<score [j +1])
{
int sum = 0;
sum =score [j ];
score[j] = score[j + 1];
score [j+1]=sum ;
}
}
}
for (i = 0; i < score.Length;i++ )
{
Console.WriteLine(score [i ]);
}
Console.ReadKey();
复制代码
结果是40 30 20 10 50 60 70 这神马情况???求大神帮忙看下
作者:
黑马田杰
时间:
2013-4-14 15:33
第七行
“for ( j = 0; j < score.Length - j - 1;j ++ )”
写错了哦。应为:
“for ( j = 0; j < score.Length - i - 1;j ++ )”
作者:
梁思思
时间:
2013-4-14 15:36
for ( j = 0; j < score.Length - j - 1;j ++ )改为 for ( j = 0; j < score.Length - i - 1;j ++ )
作者:
huima
时间:
2013-4-14 15:39
int[] score = { 10,20,30,40,50,60,70};
//int[] score = { 70,60,50,40,30,2,1};
//int[] score = {8,12,2,78,35,45,56,69,1,89,57,32,45,78 };
for (int i=0;i<score .Length -1;i++) //在内部定义整型变量 i
{
for ( int j = 0; j < score.Length - i - 1;j ++ )//在内部定义整型变量 j ,并且j < score.Length - i - 1 ,主要是这里出错了。。。
{
if (score [j ]<score [j +1])
{
int sum = 0;
sum =score [j ];
score[j] = score[j + 1];
score [j+1]=sum ;
}
}
}
for (i = 0; i < score.Length;i++ )
{
Console.WriteLine(score [i ]);
}
Console.ReadKey();
作者:
小人物
时间:
2013-4-14 15:41
你的里面的循环里面的条件写错了,应该是-i-1;,你写的-j-1;
作者:
许正龙
时间:
2013-4-14 18:16
错误他们都已经帮你找出来了,这里给你一个改良版的冒泡排序
for (int i = 0; i < arr.Length; i++)
{
bool flag = true;//标签
for (int j = 0; j < arr.Length-i-1; j++)//循环冒泡
{
if (arr[j] > arr[j + 1])//如果前一个数比后一个数大,则交换
{
int temp;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = false;//如果发生交换,设定标签的值为false
}
}
if (flag)//判断标签,当上一个循环中没有数据交换时,说明数组排序已完成,跳出循环。
{
break;
}
}
Console.WriteLine("排序结果:");
for (int i = 0; i < arr.Length; i++)//循环打印出排序后的数组。
{
Console.WriteLine(arr[i]);
}
Console.ReadKey();
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2