java冒泡排序代码完整,怎么用JAVA实现冒泡排序

1,怎么用JAVA实现冒泡排序static void BubbleSort(int a [])int temp=0;for (int i = 0; i < a.length ; i++)for (int j = 0; j < a.length - i - 1; j++)if (a[j]>a[j + 1])temp=a[j];a[j]=a[j + 1];a[j + 1]=temp;}}}}方法一:package basic.javastu;public class numbertest {/*** 实现冒泡程序1*/public static void main(string[] args) {// todo auto-generated method stubint[] numb=new int[]{3,42,57,1,32,24};int len=numb.length;int i,j;int temp;system.out.println("排序前的数组各个值:");for(i=0;i=1;j--) { if(numb[j]>numb[j-1]) { temp=numb[j]; numb[j]=numb[j-1]; numb[j-1]=temp; } } } system.out.println("排序后的数组各个值:"); for(i=0;i=1;j--) { if(n2[j]>n2[j-1]) { temp=n2[j]; n2[j]=n2[j-1]; n2[j-1]=temp; } } } return n2; } } 方法三: package basic.javastu; public class numbertest3 { /** * 实现冒泡程序2 */ public static void main(string[] args) { // todo auto-generated method stub int[] numb=new int[]{3,42,57,1,32,24}; int leng=numb.length; system.out.println("排序前的数组各个值:"); for(int i=0;i=1;j--) { if(numb[j]>numb[j-1]) { temp=numb[j]; numb[j]=numb[j-1]; numb[j-1]=temp; } } } } }
2,用JAVA语言编写一个冒泡排序法要详细的我n年前上学用的 , 你看看把,呵呵 。希望对你有帮助public class Test public void Sx(int[] t)for(int i = 0;i < t.length;i++)if(t[i] < 10)System.out.print("0"+t[i]+" ");}elseSystem.out.print(t[i]+" ");}if((i+1) % 6 == 0)System.out.println();}}}public static void main(String[] args)Test m = new Test();int a[] = new int[36];out1:for(int i = 0;i < 36;i++)a[i] = (int)(Math.random() * 36 + 1);for(int j = 0; j < 36 && j != i;j++)if(a[j] == a[i])i--;continue out1;}}}m.Sx(a);System.out.println();//Arrays.sort(a);//冒泡法int temp;for(int i=0;i<a.length;i++)for(int j=0;j+1<a.length-i;j++)if(a[j]>a[j+1])temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}m.Sx(a);}}
3,java冒泡排序其实3楼的回答已经说到重点了,但问题不在于你的if条件里你这个题的错误在于你排序的内层循环的终止条件有问题不应该是j<a.length因为这个会得到你数组的长度,而你内层循环做的是对每次比较进行循环 , 也就是说外层循环是控制一共几个数参与冒泡,而内层则是控制每个数字要跟其他的几个去比较,就好比5个人比身高其中一个要跟几个比?是不是4个呢,他不用跟自己比,因此这个语句需要写成j<a.length-1,那这个时候已经可以正常执行了,但是还不是最好的答案,因为大家都知道冒泡排序是从底下开始将要排序的数据一个个的弄到最上面,那这个过程中外循环执行一次 , 就会有一个数据在内层循环的工作下,经过比对成功的到顶,那这个数据已经和所有的数据进行过比对了,他已经是最大或者最小的了,后后面的数据再进行比较的时候已经没必要再去跟它比较了,再比虽然不会错 , 但是会额外的消耗一些性能做一些没意义的事情了 。解决方案是修改内循环的结束条件为j<a.length-1-i为什么减i呢,i是控制每个数字去循环比对的循环中的变量,每比出来一个,它会自加一次,也就是说i是几就代表已经排好几个了,这已经排好的几个 , 我们已经不需要再去做比较了,因此我们将它们减掉 。另外现在在JAVA里面已经不需要自己手写冒泡排序了,使用util包的Arrays类的sort方法就可以进行排序了 , 不过还是很认同你的学习精神的,毕竟冒泡排序在其他的语言中还是有用的呵呵 。class no3 public static void main(String[] args) int[] a=for (int i=1;i<a.length ;i++ ) for (int j= i + 1;j<a.length ;j++ )if (a[j]>a[j])int temp=a[j];a[i]=a[j];a[j]=temp;} } } for (int i=0;i<a.length ; i++)System.out.println(a[i]+" "); } } }依次比较相邻的两个数,将小数放在前面,大数放在后面 。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后 。然后比较第2个数和第3个数,将小数放前 , 大数放后,如此继续,直至比较最后两个数 , 将小数放前,大数放后 。至此第一趟结束,将最大的数放到了最后 。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数) , 将小数放前,大数放后 , 一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数) 。如此下去,重复以上过程,直至最终完成排序 。由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序 。for(int j=0;j<=len-i-1;j++),冒泡排序比较相邻的值,也就是a[j]和a[j+1]相比较所以这段代码从a[0]开始与后面的a[1]比较,如果a[1]小于 a[0]就换 。不小于j++,a[1]和[a2]比较,以此类推,直到比到a[len-i-1]时 , 也就比到了最后一个数组了 。上层循环就是控制数组比较的长度 。for (int j=0;j<a.length ;j++ ) int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } 这段有问题的是if (a[j]>a[j+1]) 当循环到 j=4的时候 j+1就是5 超出数组的上限(a[0]--a[4]) 所以回抛出Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException 数组长度异常 而且你这个方法本身就有问题正确的应该是 for (int i=0;i<a.length ;i++ ) for (int j=0;j<a.length ;j++ ) if (a[i]>a[j]) int temp=a[i]; a[i]=a[j]; a[j]=temp; } } }【java冒泡排序代码完整,怎么用JAVA实现冒泡排序】

    推荐阅读