首頁  >  文章  >  Java  >  Java 中的冒泡排序

Java 中的冒泡排序

WBOY
WBOY原創
2024-08-30 15:31:50581瀏覽

冒泡排序是Java中最常用的資料排序演算法之一。排序是透過遞歸比較相鄰數字並按升序或降序移動它們來完成的。完成元素的移動,直到所有數字都按照所需的順序完全排序。冒泡排序之所以得名,是因為陣列冒泡的元素是它們的開始方式。讓我們透過一個例子來理解冒泡排序演算法。

範例:考慮需要按升序排列的數字陣列 [6 1 8 5 3]。

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

冒泡排序演算法會進行多次迭代,直到發現所有數字都已排序。

迭代

以下是Java中冒泡排序的迭代過程如下:

第一次迭代

[6 1 8 5 3] – 首先比較前兩個數字,並將兩個數字中較小的數字向右移動。因此在 6 和 1 中,1 是向左移動的較小數字,6 是向右移動的數字。 [1 6 8 5 3] – 接下來,它透過向右移動一個位置來比較相鄰的兩個數字。這裡,數字 6 小於 8,因此保留相同的順序。 [1 6 8 5 3] – 再次向右移動一個位置,在 8 和 5 之間進行比較。數字 5 向左移動,因為它較小超過 8。 [1 6 5 8 3] – 此處,數字 8 和 3 之間進行比較。數字 3 向左移動,因為它小於 8。 [1 6 5 3 8] – 這是第一次迭代後訂單的最終結果。

第二次迭代

由於數字仍未完全增加,程式進行第二次迭代。

[1 6 5 3 8] – 這裡,再從第一次迭代結果的前兩位開始比較。它比較數字 1 和 6 並保留相同的順序,因為 1 小於 6。 [1 6 5 3 8] – 此處比較數字 5 和 6。保留相同的順序,因為它已經處於所需的遞增順序中。 [1 5 6 3 8] – 數字 6 和 3 之間發生比較。數字 3 向左移動,因為它小於 6。 [1 5 3 6 8] – 接下來,數字 6 和 8 會互相比較。保留與預期順序相同的順序。 [1 5 3 6 8] – 這是第二次迭代後的最終結果。儘管如此,我們仍然可以注意到數字並沒有完全按照升序排列。儘管如此,我們仍然需要交換數字 5 和 3 才能得到最終結果。因此程序進行第三次迭代。

第三次迭代

[1 5 3 6 8] – 第三次迭代從比較前兩位數字 1 和 5 開始。由於順序符合預期,因此保持不變。 [1 5 3 6 8]- 接下來,比較相鄰的數字 3 和 5。由於5比3大,所以移到右側。 [1 3 5 6 8] – 迭代繼續比較數字 5 和 6、6 和 8。由於它符合所需的順序,因此它保留順序。 [1 3 5 6 8] – 最後停止迭代,程式遍歷比較每個相鄰元素,發現所有數字都是升序的。

由於只需對陣列的 5 個元素進行排序,因此只需要 3 次迭代。隨著數組中元素的增加,迭代次數也會增加。

使用 Java 實作冒泡排序

下面是Java程式碼,它實作了冒泡排序演算法。 (請注意,Java 中數組的第一個位置從 0 開始,以 1 為增量繼續,即 array[0]、array[1]、array[2],如此繼續。)

代碼:

import java.util.Scanner;
public class BubbleSort {
static void bubbleSort(int[] arraytest) {
int n = arraytest.length; //length of the array is initialized to the integer n
int temp = 0; //A temporary variable called temp is declared as an integer and initialized to 0
for(int i=0; i < n; i++){ // first for loop performs multiple iterations
for(int j=1; j < (n-i); j++){
if(arraytest[j-1] > arraytest[j]){ // if loop compares the adjacent numbers
// swaps the numbers
temp = arraytest[j-1]; // assigns the greater number to temp variable
arraytest[j-1] = arraytest[j]; // shifts the lesser number to the previous position
arraytest[j] = temp; // bigger number is then assigned to the right hand side
}
}
}
}
public static void main(String[] args) {
int arraytest[] ={23,16,3,42,75,536,61}; // defining the values of array
System.out.println("Array Before Doing Bubble Sort");
for(int i=0; i < arraytest.length; i++){ // for loop used to print the values of array
System.out.print(arraytest[i] + " ");
}
System.out.println();
bubbleSort(arraytest); // array elements are sorted using bubble sort function
System.out.println("Array After Doing Bubble Sort");
for(int i=0; i < arraytest.length; i++){
System.out.print(arraytest[i] + " "); // for loop to print output values from array
}
}
}

輸出:

Java 中的冒泡排序

Java 中冒泡排序的優點和缺點

以下是 Java 中冒泡排序的不同優點和缺點:

優點

  1. 程式碼非常容易編寫和理解。通常只需要幾分鐘。
  2. 實作也非常容易。
  3. 冒泡排序對數字進行排序並將它們保留在記憶體中,因此節省了大量記憶體。

缺點

  1. 此演算法不適合大型資料集,因為比較需要花費大量時間。對輸入數字進行排序所需的時間呈指數增長。
  2. O(n^2) 是冒泡排序的平均複雜度,O(n) 是最佳情況複雜度(最好情況是元素排在第一位時),其中 n 是元素數量。

即時應用

由於冒泡排序能夠檢測排序中的微小錯誤,因此它被用於電腦圖形學中。它也用在多邊形填充演算法中,需要對多邊形的頂點襯裡進行排序。

結論

本文了解了冒泡排序演算法的工作原理以及如何使用 Java 程式設計來實現它。冒泡排序是一種非常穩定的演算法,可以針對相對較小的資料集輕鬆實現。這是一個比較演算法的案例,由於簡單,適合新手使用。

以上是Java 中的冒泡排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn