日期:2014-05-20  浏览次数:20783 次

新手写的一个冒泡排序
写的一个冒泡排序,不知道哪里出了问题了,求指教
package sz;
import java.io.*;



public class sz {


public static void main(String[] args) {
int a[]={1,3,25,34,15,44,22,5,9,0};
System.out.println("排序结果为:");
Bouble(a);

     
}
static void Bouble(int a[]){
int i,j,temp;
for(j=0;j<a.length-2;j++){
for(i=0;i<a.length-j;i++){
if(a[i]>a[i+1]){
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
for(i=0;i<a.length;i++)
System.out.println(a[i]);
}



}

------最佳解决方案--------------------
你看下你的代码,数组越界。。你把第二个循环的i<a.length-j;改为i<a.length-j-1;就可以了
------其他解决方案--------------------
for(j=0;j<a.length-1;j++){
   for(i=0;i<a.length-j-1;i++){ 

第一个循环的终止条件 a.length-1
第二个 a.length-j-1
------其他解决方案--------------------
这应该是冒泡排序吧?
我感觉你还是逻辑没理明白
 for(i=0;i<a.length-j;i++){                 if(a[i]>a[i+1]){                     temp=a[i];                     a[i]=a[i+1];                     a[i+1]=temp;                     }             } 
这一块的代码逻辑上有点问题。
应该是先遍历10个,求出最大的排在第一位,
然后从第二个开始,遍历9个,求出最大的排在第二位,
依次类推。
等我10分钟,帮你调出来
------其他解决方案--------------------

public class Test1 {
public static void main(String[] args) { 
int a[]={1,3,25,34,15,44,22,5,9,0};     
System.out.println("排序结果为:");    
Bouble(a); 
}
static void Bouble(int a[]){        
int i,j,temp = 0;
for(j=0;j<10;j++){


for(i=j;i<a.length;i++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}

}
//System.out.println("本次循环最大数为"+a[j]);
}
for(int k=0;k<a.length;k++){
System.out.println(a[k]);
}
}
}

------其他解决方案--------------------
引用:
你看下你的代码,数组越界。。你把第二个循环的i<a.length-j;改为i<a.length-j-1;就可以了

改了之后结果如下:
排序结果为:
1
0
3
5
9
15
22
25
34
44
------其他解决方案--------------------
 for(j=0;j<a.length-2;j++){
改成: 
 for(j=0;j<a.length-1;j++){ 
就可以了
你的思路是最大的放后面,我求的是最大数放前面,思路不一样。
------其他解决方案--------------------
package Other;

public class Test1 {
 
 
    public static void main(String[] args) {