Java 4種方法實現冒泡排序演算法

來源:互聯網
上載者:User
一、基本思路:

冒泡排序是一種簡單的交換類排序。其基本思路是,從頭開始掃描待排序的元素,在掃描過程中依次對相鄰元素進行比較,將關鍵字值大的元素後移。每經過一趟排序後,關鍵字值最大的元素將移到末尾,此時記下該元素的位置,下一趟排序只需要比較到此位置為止,直到所有元素都已有序排列。

一般地,對n個元素進行冒泡排序,總共需要進行n-1趟。第1趟需要比較n-1次,第2趟需要比較n-2次,……第i趟需要比較n-i次。 二、4種演算法實現

package com.struct.array;/** * @描述 數組排序 * @項目名稱 Java_DataStruct * @包名 com.struct.array * @類名 ArraySort * @author chenlin * @date 2010年6月22日 下午8:28:46 */public class ArraySort {    /**     * 相鄰的兩個值對比     *      * @param arr     */    public static void bubbleSort1(long[] arr) {        for (int i = 0; i < arr.length - 1; i++) { // 最多做n-1趟排序            for (int j = 0; j < arr.length - 1 - i; j++) { // 對當前無序區間arr[0......length-i-1]進行排序(j的範圍很關鍵,這個範圍是在逐步縮小的)                if (arr[j] > arr[j + 1]) { // 把小的值交換到後面                    arr[j] = arr[j] ^ arr[j + 1];                    arr[j + 1] = arr[j] ^ arr[j + 1];                    arr[j] = arr[j] ^ arr[j + 1];                }            }        }        list(arr);    }    /**     * 相鄰的兩個值對比     *      * @param arr     */    public static void bubbleSort2(long[] arr) {        for (int i = 0; i < arr.length - 1; i++) {            for (int j = 0; j < arr.length - 1 - i; j++) {                if (arr[j] > arr[j + 1]) {                    arr[j] = arr[j] + arr[j + 1];                    arr[j + 1] = arr[j] - arr[j + 1];                    arr[j] = arr[j] - arr[j + 1];                }            }        }        list(arr);    }    /**     * 相鄰的兩個值對比     *      * @param arr     */    public static void bubbleSort3(long[] arr) {        for (int i = 0; i < arr.length - 1; i++) {            for (int j = 0; j < arr.length - 1 - i; j++) {                if (arr[j] > arr[j + 1]) {                    long temp = arr[j];                    arr[j] = arr[j + 1];                    arr[j + 1] = temp;                }            }        }        list(arr);    }    /**     * 相鄰的兩個值對比     *      * @param arr     */    public static void bubbleSort4(long[] arr) {        for (int i = 0; i < arr.length - 1; i++) {            for (int j = arr.length - 1 - i; j > 0; j--) {                if (arr[j] < arr[j - 1]) {                    long temp = arr[j];                    arr[j] = arr[j - 1];                    arr[j - 1] = temp;                }            }        }        list(arr);    }    public static void list(long[] arr) {        for (int i = 0; i < arr.length; i++) {            System.out.print(arr[i] + "  ");        }        System.out.println("");    }    public static void main(String[] args) {        long arr[] = { 22, 33, 44, 11, 23, 43, 54, 0, 98 };        bubbleSort4(arr);    }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.