java中的冒泡排序

//排队
public void bubbleSort(Monkey[] monkeys)
{
float tempHeight=0.0f;
String tempNo="";
//冒泡
for(int i=0;i<monkeys.length-1;i++)
{
for(int j=0;i<monkeys.length-1-i;j++)
{
if(monkeys[j].height>monkeys[j+1].height) //该行会报数组越界错误
{
tempHeight=monkeys[j].height;
monkeys[j].height=monkeys[j+1].height;
monkeys[j+1].height=tempHeight;

tempNo=monkeys[j].monkeyId;
monkeys[j].monkeyId=monkeys[j+1].monkeyId;
monkeys[j+1].monkeyId=tempNo;
}
}
}
}
//为什么会出错?

第1个回答  2013-12-04
for(int j=0;i<monkeys.length-1-i;j++)
{
if(monkeys[j].height>monkeys[j+1].height) //该行会报数组越界错误

第一行。。for(int j=0;i<monkeys.length-1-i;j++)中的i<monkeys.length-1-i明显逻辑不对。。该是j<monkeys.length-1-i吧本回答被提问者采纳
第2个回答  2013-12-04
第二个for循环for(int j=0;i<monkeys.length-1-i;j++)

写for(int j=i+1;j<monkeys.length;j++)
第3个回答  2013-12-04
for(int j=0;i<monkeys.length-1-i;j++)
这里面为什么是i<monkeys.length-1-i;不应该是J吗,当J=monkeys.length-i的时候j+1肯定就越界了啊就好比有0,1,2,3个位置你现在要找4这个位置数组没有所以越界
第4个回答  2013-12-04
for(int j=0;i<monkeys.length-1-i;j++) 这句语句应该是j<monkeys.length-1-i 吧
第5个回答  2013-12-04
//排队
public void bubbleSort(Monkey[] monkeys){
float tempHeight=0.0f;
String tempNo="";
//冒泡
for(int i=0; i<monkeys.length;i++){
for(int j=i+1; j<monkeys.length; j++){
if(monkeys[j].height>monkeys[i].height){
tempHeight=monkeys[j].height;
monkeys[j].height=monkeys[i].height;
monkeys[i].height=tempHeight;

tempNo=monkeys[j].monkeyId;
monkeys[j].monkeyId=monkeys[i].monkeyId;
monkeys[i].monkeyId=tempNo;
}
}
}
}
相似回答
大家正在搜