Java 杂谈

二、Java版冒泡排序

2018-09-25  本文已影响6人  编程界的小学生

一、核心思想

比较两个元素,如果前一个比后一个大,则进行交换。经过对每个元素的比较。最后将最大的元素设置成最后一个元素。重复(n-1次)该操作,最后形成从小到大的排序。

二、源码

package com.ctw;

/**
 * @author TongWei.Chen 2018-09-25 16:01:32
 * @Description: 冒泡排序
 * @Project sjjg-sf
 */
public class BubbleSort {

    /**
     * 冒泡排序
     */
    public static void bubbleSort(long[] arr) {
        // 0、定义交换变量,注意:细节操作,我没放到for里面,是为了外面定义只生成一个变量到栈里。
        long temp = 0L;
        // 1、需要进行n-1趟排序
        for (int i = 0; i < arr.length - 1; i ++) {
            // 2、j < arr.length - i;是因为上面已经控制了外层循环的趟数,每一次外层循环都会找到一个最小数字并放到了最左侧。
            // 所以这里-i操作是为了少循环几遍,节省一点性能开销。
            // - 1;操作是因为下面要进行变量替换,方便arr[j + 1];也可以不-1,直接int j = 1;开始,然后下面arr[j - 1] > arr[j],一样的道理
            for (int j = 0; j < arr.length - i - 1; j ++) {
                // 若左侧大于右侧,则进行变量替换,因为我们是从小大大排序。
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

    public static void main(String[] args) {
        MyArray myArray = new MyArray();
        myArray.add(30L);
        myArray.add(12L);
        myArray.add(33L);
        myArray.add(20L);
        myArray.add(10L);
        bubbleSort(myArray.getArr());
        myArray.display();
    }

}

三、广告

上一篇下一篇

猜你喜欢

热点阅读