看完数据结构和算法的冒泡排序,自己写写。
外层循环到底是要大于0,还是大于1,实验下就知道了!
- Java code
package com.wxg.algorithm;public class MaoPaoPaiXu { int[] arr = new int[10] ; ///arr = {10,39,2,55,87,29,37,45,90,100}; // 这种大括号初始化的方式只能用在声明时,其他地方都不行。 //int[] arr1 = {10,39,2,55,87,29,37,45,90,100}; /** * 这个sorted方法只适用于int类型的数组。 * 要扩展成适用所有类型的数组是用object[],还是泛型呢? */ public static int[] sorted(int[] arr){ for(int i=arr.length-1;i>0;i--){ for(int j=0;j<i;j++){ int temp = 0; if(arr[j+1] < arr[j]){ temp = arr[j+1]; arr[j+1] = arr[j] ; arr[j] = temp ; } } } return arr ; } /** * 还是书上,作者的列子比较清晰。定义两个计数器:out,in , * out外层的循环次数, 内层的循环计数in 每次都是从0开始。 * @param arr * @return */ public static int[] bubbleSort(int[] arr){ int out ,in ; int temp ; /**注意到书中的out>1即out=2将是最后一次循环。out>1是不对的, * 一次循环无法将0、1、2三个元素正确排序。特别是数组中的元素是倒序的 * main方法中的arr2 即是,运行程序,发现还需要一次交换!*/ for(out=arr.length-1;out>1;out--){ for(in=0;in<out;in++){ if(arr[in+1] < arr[in]){ temp = arr[in+1]; arr[in+1] = arr[in]; arr[in] = temp ; } } } return arr ; } /** * display方法也是只能循环打印 int 类型的数组 * @param arr */ public static void display(int[] arr){ System.out.print("数组arr的所有元素: "); for(int i=0;i<arr.length;i++){ // 千万不要写成i,而应该是arr[i] System.out.print(arr[i]+" "); } System.out.println(""); } public static void main(String[] args) { int[] arr1 = {10,39,2,55,87,29,37,45,90,100}; int[] arr2 = {100,99,78,68,57,45,41,40,32,30,22,11,8,5,3,1,0}; /** 如果arr1 还是定义为类的成员变量,display和sorted方法不能直接调用。 * 因为:静态方法不能调用非静态域。Cannot make a static reference to the non-static field arr * 必须创建一个对象,然后调用**/ //display(arr); display(arr2); //sorted(arr1); bubbleSort(arr2); display(arr2); }}
------解决方案--------------------
哈哈 很久没看到冒泡了 都快忘了
------解决方案--------------------
如果你热衷算法 不建议你搞java 压根没什么用
------解决方案--------------------
------解决方案--------------------
算法还是有用的 只是在Java中的比重不如C++吧
------解决方案--------------------
- Java code
public class BubbleSort { static void bubbleSort(int[] arr){ for(int i = 0; i < arr.length - 1; ++i){ boolean flag = false; for(int j = 0; j < arr.length - i - 1; ++j){ if(arr[j] > arr[j+1]){ flag = true; int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } if(!flag) return; } } public static void main(String[] args){ int[] a = {2, 3, 6, 5, 4}; bubbleSort(a); for(int i = 0; i < a.length; ++i) System.out.print(a[i] + " "); System.out.println(); }}
------解决方案--------------------
不是java算法函数定义的很多,所以算法不用的吗?
------解决方案--------------------