当前位置: 代码迷 >> J2SE >> [数据结构和算法]冒泡排序的小小总结!该怎么解决
  详细解决方案

[数据结构和算法]冒泡排序的小小总结!该怎么解决

热度:145   发布时间:2016-04-24 02:19:28.0
[数据结构和算法]冒泡排序的小小总结!
看完数据结构和算法的冒泡排序,自己写写。
外层循环到底是要大于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 压根没什么用

------解决方案--------------------
算法还是有用的 只是在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算法函数定义的很多,所以算法不用的吗?
------解决方案--------------------
  相关解决方案