这个冒泡法错在哪里了?请高手解答

来源:百度知道 编辑:UC知道 时间:2024/05/29 09:11:24
public class BuddleSorting {

public static void main (String args[]){
int []list={1,22,14,3,80,10};
System.out.println ("最初数组:");
for (int i = 0; i<list.length; i++)
System.out.print(" "+list[i]);
bubbleSort(list);
System.out.println ();
System.out.println ("排序后的数组是:");
for (int i = 0; i<list.length; i++)
System.out.print(" "+list[i]);
}
static void bubbleSort(int []list){
for (int i = 0; i<list.length; i++){

int temp=0;
boolean flag=true;
for (int j = 1; j<list.length-1; j++){
if(list[j-1]<list[j]){
temp=list[j-1];
list[j-1]=list[j];
list[j]=temp;
flag=false;
}
if(flag) break;
}
}
}
}

1 2 3
2 1 3
2 3 1

你认为你的程序能给数组排序吗? 两个FOR循环,为什么外层的你没用,那你写它干什么

flag没用,要它干嘛

内层循环,不需要list.length-1;减了1你怎么访问到数组的最后一个元素啊

for (int j = 1; j<list.length; j++){
if(list[j-1]<list[j]){
temp=list[j-1];
list[j-1]=list[j];
list[j]=temp;

}

}
flag没作用,反而错了,去掉它,for循环不需要减1