排序演算法之冒泡排序Java實現

來源:互聯網
上載者:User

標籤:bubble   void   rand   []   stat   元素   scribe   main   text   

排序演算法之冒泡排序

一、初級的冒泡排序

import java.util.Arrays;

/**
*
* @title BubbleSort
* @describe 冒泡排序
* @author 張富昌
* @date 2016年10月1日下午3:56:30
*/
public class BubbleSortLow {
  // 起泡排序是快速排序的基礎,但是排序速度較慢。
  // 基本思想:將序列中第 1 個元素與第 2 個元素進行比較,如前者大於後者,則兩個元素交換位置,否則不交換;
  // 再將第 2 個元素與第 3 個元素進行比較,如前者大於後者,則兩個元素交換位置,否則不交換;
  // 依此類推,直到第 n-1 個元素與第 n 個元素進行比較,如前者大於後者,則兩個元素交換位置,否則不交換;
  // 經過如此一趟排序,使得 n 個元素的最大值被安置在第 n 個位置上;
  // 此後,再對前 n-1 個元素進行同樣的過程,使得該 n-1 個元素的最大值被安置在第 n-1 個位置上;
  // 然後再對前 n-2 個元素重複以上的過程... 直到某一趟排序過程中不出現元素交換位置的動作,排序結束。

  public static void main(String[] args) {
    // 聲明整型數組
    int[] array = new int[10];
    // 使用迴圈和隨機數初始化數組
    for (int i = 0; i < array.length; i++) {
      array[i] = (int) Math.round(Math.random() * 100);
    }
    System.out.println("原始數組為:");
    System.out.println("--------------------------------------");
    System.out.println(Arrays.toString(array));
    array = bubbleSort(array);
    System.out.println("--------------------------------------");
    System.out.println("排序後的數組為:");
    System.out.println(Arrays.toString(array));
  }

  /**
   *
   * 功能:冒泡排序的基本思想就是不斷比較相鄰的兩個數,讓較大的元素不斷地往後移。經過一輪比較,就選出最大的數;經過第2輪比較,就選出次大的數,
   * 以此類推。
   *
   *
   * 參數:int[] array
   *
   * 傳回型別:int[]
   */
  private static int[] bubbleSort(int[] array) {
    // 使用臨時數組,替代原始數組
    int[] arr = array;
    for (int i = 0; i < arr.length; i++) {
      System.out.println("第 " + (i + 1) + "趟");
      for (int j = 0; j < arr.length - 1 - i; j++) {
        if (arr[j] > arr[j + 1]) {
          int temp = arr[j];
          arr[j] = arr[j + 1];
          arr[j + 1] = temp;
        }
      }
      // 列印每一趟的數組
      System.out.println(Arrays.toString(arr));
    }
  return arr;
  }

}

二、改良版的冒泡排序

 

import java.util.Arrays;

 

/**
*
* @title BubbleSort
* @describe 冒泡排序
* @author 張富昌
* @date 2016年10月1日下午3:56:30
*/
public class BubbleSortHigh {
  // 起泡排序是快速排序的基礎,但是排序速度較慢。
  // 基本思想:將序列中第 1 個元素與第 2 個元素進行比較,如前者大於後者,則兩個元素交換位置,否則不交換;
  // 再將第 2 個元素與第 3 個元素進行比較,如前者大於後者,則兩個元素交換位置,否則不交換;
  // 依此類推,直到第 n-1 個元素與第 n 個元素進行比較,如前者大於後者,則兩個元素交換位置,否則不交換;
  // 經過如此一趟排序,使得 n 個元素的最大值被安置在第 n 個位置上;
  // 此後,再對前 n-1 個元素進行同樣的過程,使得該 n-1 個元素的最大值被安置在第 n-1 個位置上;
  // 然後再對前 n-2 個元素重複以上的過程... 直到某一趟排序過程中不出現元素交換位置的動作,排序結束。

 

  public static void main(String[] args) {
    // 聲明整型數組
    int[] array = new int[10];
    // 使用迴圈和隨機數初始化數組
    for (int i = 0; i < array.length; i++) {
      array[i] = (int) Math.round(Math.random() * 100);
    }
    System.out.println("原始數組為:");
    System.out.println(Arrays.toString(array));
    System.out.println("--------------------------------------");

 

    array = bubbleSort(array);
    System.out.println("--------------------------------------");
    System.out.println("排序後的數組為:");
    System.out.println(Arrays.toString(array));
  }

 

  /**
  *
  * 功能:冒泡排序的基本思想就是不斷比較相鄰的兩個數,讓較大的元素不斷地往後移。經過一輪比較,就選出最大的數;經過第2輪比較,就選出次大的數,
  * 以此類推。
  *
  *
  * 參數:int[] array
  *
  * 傳回型別:int[]
  */
  private static int[] bubbleSort(int[] array) {
    // 使用臨時數組,替代原始數組
    int[] arr = array;
    for (int i = 0; i < arr.length; i++) {
      System.out.println("第 " + (i + 1) + "趟");
      // 交換的標誌,初始值為 false
      boolean swap = false;

 

      for (int j = 0; j < arr.length - 1 - i; j++) {
        if (arr[j] > arr[j + 1]) {
          // 如果交換了,交換標誌置為 true
          swap = true;
          int temp = arr[j];
          arr[j] = arr[j + 1];
          arr[j + 1] = temp;
        }
      }
      System.out.println(Arrays.toString(arr));
      // 如果交換標誌為 false,即沒有交換,則跳出最近的迴圈
      if (!swap) {
        break;
      }
    }
    return arr;
  }

 

}

 

排序演算法之冒泡排序Java實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.