使用Java語言實現(xiàn)一個冒泡排序
前言
本篇文章將通過IDE使用 Java 語言實現(xiàn)一個冒泡排序。
冒泡排序介紹
冒泡排序也是一種簡單直觀的排序算法。
冒泡排序的基本思想是多次遍歷要排序的數(shù)組,每次比較相鄰的元素,如果順序不對就交換它們的位置,一次遍歷會將一個最大(或最?。┑脑?quot;冒泡"到數(shù)組的末尾(或開頭)。
通過多次遍歷,直到?jīng)]有任何元素需要交換,整個數(shù)組就排序完成了。
通俗理解
當你需要對一組數(shù)字進行排序時,冒泡排序就像是在一個裝有很多顏色不同的氣泡的水槽里,不斷地把氣泡按照大小順序排列。
在這個簡單的排序算法中,我們會從數(shù)組的開頭開始,比較相鄰的兩個數(shù)字,如果前一個數(shù)字比后一個數(shù)字大,就把它們交換位置。
這樣,每一輪比較,都會讓一個最大的數(shù)字“冒泡”到當前尚未排序的部分的末尾。
舉個例子,假設(shè)我們有一組數(shù)字:3, 38, 5, 44, 15, 47, 36, 26, 27, 2, 46, 4, 19, 50, 48。
下面是冒泡排序的執(zhí)行過程:
1.第一輪比較后,最大的數(shù)字 50 被冒泡到了數(shù)組末尾,數(shù)組變?yōu)椋?, 5, 38, 15, 44, 36, 26, 27, 2, 46, 4, 19, 47, 48, 50
2.第二輪比較后,第二大的數(shù)字 48 被冒泡到了倒數(shù)第二的位置,數(shù)組變?yōu)椋?, 5, 15, 38, 36, 26, 27, 2, 44, 4, 19, 46, 47, 48, 50
3.經(jīng)過多輪比較和交換后,所有數(shù)字按照從小到大的順序排列完成。
代碼實現(xiàn)
冒泡排序的 Java 代碼
public class BubbleSortExample { public static void main(String[] args) { int[] array = {3, 38, 5, 44, 15, 47, 36, 26, 27, 2, 46, 4, 19, 50, 48}; System.out.println("排序前數(shù)組:"); printArray(array); bubbleSort(array); System.out.println("\n排序后數(shù)組:"); printArray(array); } public static void bubbleSort(int[] arr) { int n = arr.length; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { // 交換 arr[j] 和 arr[j+1] int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } public static void printArray(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } }
效果
動圖演示
冒泡降序排序
冒泡排序的默認排序方式是升序排序。
在冒泡排序算法中,數(shù)組中相鄰的元素會進行比較,如果順序不對則進行交換,每一輪排序都會將當前最大(或最?。┑脑胤诺秸_的位置上,最終實現(xiàn)整個數(shù)組的升序排序。
如果要將冒泡排序改為降序排序,只需在比較大小的地方做相應修改即可,如將大于號(>)改為小于號(<)
public class BubbleSortExample { public static void main(String[] args) { int[] array = {3, 38, 5, 44, 15, 47, 36, 26, 27, 2, 46, 4, 19, 50, 48}; System.out.println("排序前數(shù)組:"); printArray(array); bubbleSort(array); System.out.println("\n排序后數(shù)組:"); printArray(array); } public static void bubbleSort(int[] arr) { int n = arr.length; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] < arr[j + 1]) { // 修改此處實現(xiàn)降序排序 // 交換 arr[j] 和 arr[j+1] int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } public static void printArray(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } }
每日小技巧
快速搜索
在樹狀圖中快速搜索
在所有樹狀圖中都可以執(zhí)行快速搜索,例如,在項目工具窗口中。開始輸入,然后很快就能找到所需條目。
預覽搜索結(jié)果
您可以使用在文件中查找對話框(Ctrl+Shift+F)得預覽區(qū)域,不必推出對話框就能執(zhí)行快速搜索。預覽對話框可以顯示前100條結(jié)果
常見排序算法
以下是 Java 中常見的幾種排序算法及簡單描述:
1.冒泡排序(Bubble Sort)
- 算法思想:通過交換相鄰的元素進行比較和排序,每一輪將未排序部分中最大(或最?。┑脑爻恋降撞?。
- 時間復雜度:平均情況和最壞情況下的時間復雜度均為 O(n^2)。
- 適用場景:適用于數(shù)據(jù)量較小的情況。
2.選擇排序(Selection Sort)
- 算法思想:每一次遍歷找到未排序部分中的最?。ɑ蜃畲螅┰?,放到已排序部分的末尾。
- 時間復雜度:平均情況和最壞情況下的時間復雜度均為 O(n^2)。
- 適用場景:適用于數(shù)據(jù)量較小的情況。
3.插入排序(Insertion Sort)
- 算法思想:將數(shù)組分為已排序部分和未排序部分,依次將未排序部分的元素插入到已排序部分的合適位置。
- 時間復雜度:平均情況和最壞情況下的時間復雜度均為 O(n^2)。
- 適用場景:適用于部分有序的情況,數(shù)據(jù)量不大的情況。
4.快速排序(Quick Sort)
- 算法思想:通過選擇一個基準元素,將數(shù)組分為比基準小和比基準大的兩部分,遞歸地對兩部分進行排序。
- 時間復雜度:平均情況下的時間復雜度為 O(nlogn),最壞情況下為 O(n^2)。
- 適用場景:適用于大規(guī)模數(shù)據(jù)的排序,性能較好。
5.歸并排序(Merge Sort)
- 算法思想:將數(shù)組遞歸地分成兩部分,分別排序后合并,;最終得到有序數(shù)組。
- 時間復雜度:最壞情況下的時間復雜度為 O(nlogn)。
- 適用場景:適用于對鏈表以及數(shù)組等數(shù)據(jù)結(jié)構(gòu)進行排序。
最后
到此這篇關(guān)于使用Java語言實現(xiàn)一個冒泡排序的文章就介紹到這了,更多相關(guān)Java實現(xiàn)冒泡排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot啟動加載CommandLineRunner @PostConstruct問題
這篇文章主要介紹了springboot啟動加載CommandLineRunner @PostConstruct問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08SpringBoot用JdbcTemplates訪問Mysql實例代碼
本篇文章主要介紹了SpringBoot用JdbcTemplates訪問Mysql實例代碼,非常具有實用價值,需要的朋友可以參考下2017-05-05Java中高效判斷數(shù)組中是否包含某個元素的幾種方法
這是一個在Java中經(jīng)常用到的并且非常有用的操作,這個問題在Stack Overflow中也是一個非常熱門的問題,本文將分析幾種常見用法及其時間成本2021-09-09Java語言實現(xiàn)簡單FTP軟件 FTP軟件主界面(4)
這篇文章主要為大家詳細介紹了Java語言實現(xiàn)簡單FTP軟件,F(xiàn)TP軟件主界面編寫的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03