JAVA版 冒泡排序的实现及优化

阅读 485 标签:java基础  

            冒泡排序是一种典型的交换排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。
冒泡排序的思想就是利用的比较交换,利用循环将第 i 小或者大的元素归位,归位操作利用的是对 n 个元素中相邻的两个进行比较,如果顺序正确就不交换,如果顺序错误就进行位置的交换。通过重复的循环访问数组,直到没有可以交换的元素,那么整个排序就已经完成了。

代码实现:

/**
     * 冒泡排序
     * @param arr
     */
    private static void bubbleSort(int[] arr) {
        boolean flag = false;
        if(arr==null || arr.length < 2 ){
            return;
        }
        for (int i = 0; i < arr.length - 1; i++) {
            System.err.println("第"+(i+1)+"趟比较");
            for (int j = 0; j < arr.length - i -1; j++) {   // 这里说明为什么需要-1
                if (arr[j] > arr[j + 1]) {
                    flag = true;
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
                System.err.print("第"+(j+1)+"次比较:    [");
                for (int z = 0; z < arr.length; z++) {
                    System.err.print(arr[z]+" ,");
                }
                System.err.println("]");
            }
            System.err.println("第"+(i+1)+"次比较完成");
            for (int z = 0; z < arr.length; z++) {
                System.err.print(arr[z]+" ");
            }
            if(!flag)
                break;
            flag = false;
        }
    }
文章来源:网络 版权归原作者所有,如涉及知识产权问题,请权利人联系我们,我们将立即处理.
标签: java基础
专栏:   Java实践分享
蹦瞎卡拉卡
文章 13 获得 0个赞 共 0个粉丝

推荐阅读 更多精彩内容