欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Java語(yǔ)言實(shí)現(xiàn)一個(gè)冒泡排序

 更新時(shí)間:2024年03月24日 14:09:51   作者:全棧小5  
冒泡排序也是一種簡(jiǎn)單直觀的排序算法,基本思想是多次遍歷要排序的數(shù)組,每次比較相鄰的元素,如果順序不對(duì)就交換它們的位置,本篇文章將通過(guò)IDE使用 Java 語(yǔ)言實(shí)現(xiàn)一個(gè)冒泡排序,需要的朋友可以參考下

前言

本篇文章將通過(guò)IDE使用 Java 語(yǔ)言實(shí)現(xiàn)一個(gè)冒泡排序。

冒泡排序介紹

冒泡排序也是一種簡(jiǎn)單直觀的排序算法。

冒泡排序的基本思想是多次遍歷要排序的數(shù)組,每次比較相鄰的元素,如果順序不對(duì)就交換它們的位置,一次遍歷會(huì)將一個(gè)最大(或最?。┑脑?quot;冒泡"到數(shù)組的末尾(或開(kāi)頭)。

通過(guò)多次遍歷,直到?jīng)]有任何元素需要交換,整個(gè)數(shù)組就排序完成了。

通俗理解

當(dāng)你需要對(duì)一組數(shù)字進(jìn)行排序時(shí),冒泡排序就像是在一個(gè)裝有很多顏色不同的氣泡的水槽里,不斷地把氣泡按照大小順序排列。

在這個(gè)簡(jiǎn)單的排序算法中,我們會(huì)從數(shù)組的開(kāi)頭開(kāi)始,比較相鄰的兩個(gè)數(shù)字,如果前一個(gè)數(shù)字比后一個(gè)數(shù)字大,就把它們交換位置。

這樣,每一輪比較,都會(huì)讓一個(gè)最大的數(shù)字“冒泡”到當(dāng)前尚未排序的部分的末尾。

舉個(gè)例子,假設(shè)我們有一組數(shù)字:3, 38, 5, 44, 15, 47, 36, 26, 27, 2, 46, 4, 19, 50, 48。

下面是冒泡排序的執(zhí)行過(guò)程:

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)過(guò)多輪比較和交換后,所有數(shù)字按照從小到大的順序排列完成。

代碼實(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] + " ");
        }
    }
}

效果

在這里插入圖片描述

動(dòng)圖演示

在這里插入圖片描述

冒泡降序排序

冒泡排序的默認(rèn)排序方式是升序排序。

在冒泡排序算法中,數(shù)組中相鄰的元素會(huì)進(jìn)行比較,如果順序不對(duì)則進(jìn)行交換,每一輪排序都會(huì)將當(dāng)前最大(或最?。┑脑胤诺秸_的位置上,最終實(shí)現(xiàn)整個(gè)數(shù)組的升序排序。

如果要將冒泡排序改為降序排序,只需在比較大小的地方做相應(yīng)修改即可,如將大于號(hào)(>)改為小于號(hào)(<)

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]) {  // 修改此處實(shí)現(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] + " ");
        }
    }
}

在這里插入圖片描述

每日小技巧

快速搜索

在樹(shù)狀圖中快速搜索
在所有樹(shù)狀圖中都可以執(zhí)行快速搜索,例如,在項(xiàng)目工具窗口中。開(kāi)始輸入,然后很快就能找到所需條目。

在這里插入圖片描述

預(yù)覽搜索結(jié)果

您可以使用在文件中查找對(duì)話(huà)框(Ctrl+Shift+F)得預(yù)覽區(qū)域,不必推出對(duì)話(huà)框就能執(zhí)行快速搜索。預(yù)覽對(duì)話(huà)框可以顯示前100條結(jié)果

在這里插入圖片描述

常見(jiàn)排序算法

以下是 Java 中常見(jiàn)的幾種排序算法及簡(jiǎn)單描述:
1.冒泡排序(Bubble Sort)

  • 算法思想:通過(guò)交換相鄰的元素進(jìn)行比較和排序,每一輪將未排序部分中最大(或最小)的元素沉到底部。
  • 時(shí)間復(fù)雜度:平均情況和最壞情況下的時(shí)間復(fù)雜度均為 O(n^2)。
  • 適用場(chǎng)景:適用于數(shù)據(jù)量較小的情況。

2.選擇排序(Selection Sort)

  • 算法思想:每一次遍歷找到未排序部分中的最?。ɑ蜃畲螅┰兀诺揭雅判虿糠值哪┪?。
  • 時(shí)間復(fù)雜度:平均情況和最壞情況下的時(shí)間復(fù)雜度均為 O(n^2)。
  • 適用場(chǎng)景:適用于數(shù)據(jù)量較小的情況。

3.插入排序(Insertion Sort)

  • 算法思想:將數(shù)組分為已排序部分和未排序部分,依次將未排序部分的元素插入到已排序部分的合適位置。
  • 時(shí)間復(fù)雜度:平均情況和最壞情況下的時(shí)間復(fù)雜度均為 O(n^2)。
  • 適用場(chǎng)景:適用于部分有序的情況,數(shù)據(jù)量不大的情況。

4.快速排序(Quick Sort)

  • 算法思想:通過(guò)選擇一個(gè)基準(zhǔn)元素,將數(shù)組分為比基準(zhǔn)小和比基準(zhǔn)大的兩部分,遞歸地對(duì)兩部分進(jìn)行排序。
  • 時(shí)間復(fù)雜度:平均情況下的時(shí)間復(fù)雜度為 O(nlogn),最壞情況下為 O(n^2)。
  • 適用場(chǎng)景:適用于大規(guī)模數(shù)據(jù)的排序,性能較好。

5.歸并排序(Merge Sort)

  • 算法思想:將數(shù)組遞歸地分成兩部分,分別排序后合并,;最終得到有序數(shù)組。
  • 時(shí)間復(fù)雜度:最壞情況下的時(shí)間復(fù)雜度為 O(nlogn)。
  • 適用場(chǎng)景:適用于對(duì)鏈表以及數(shù)組等數(shù)據(jù)結(jié)構(gòu)進(jìn)行排序。 

最后

到此這篇關(guān)于使用Java語(yǔ)言實(shí)現(xiàn)一個(gè)冒泡排序的文章就介紹到這了,更多相關(guān)Java實(shí)現(xiàn)冒泡排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java零基礎(chǔ)精通方法篇

    Java零基礎(chǔ)精通方法篇

    方法,也稱(chēng)函數(shù),如果想要重復(fù)一段或者多段代碼塊的使用,可以將這些代碼封裝成一個(gè)方法,方法具體表現(xiàn)為某種行為,使用方法可以提高代碼的復(fù)用性
    2022-05-05
  • springboot啟動(dòng)加載CommandLineRunner @PostConstruct問(wèn)題

    springboot啟動(dòng)加載CommandLineRunner @PostConstruct問(wèn)題

    這篇文章主要介紹了springboot啟動(dòng)加載CommandLineRunner @PostConstruct問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot用JdbcTemplates訪(fǎng)問(wèn)Mysql實(shí)例代碼

    SpringBoot用JdbcTemplates訪(fǎng)問(wèn)Mysql實(shí)例代碼

    本篇文章主要介紹了SpringBoot用JdbcTemplates訪(fǎng)問(wèn)Mysql實(shí)例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05
  • Springboot如何實(shí)現(xiàn)代理服務(wù)器

    Springboot如何實(shí)現(xiàn)代理服務(wù)器

    這篇文章主要介紹了Springboot如何實(shí)現(xiàn)代理服務(wù)器問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • java io讀取文件操作代碼實(shí)例

    java io讀取文件操作代碼實(shí)例

    這篇文章主要介紹了java io讀取文件操作代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • java開(kāi)發(fā)AOP面向切面編程入門(mén)

    java開(kāi)發(fā)AOP面向切面編程入門(mén)

    這篇文章主要介紹了java開(kāi)發(fā)的AOP面向切面編程入門(mén)的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步學(xué)有所得
    2021-10-10
  • maven多模塊依賴(lài)版本不一致問(wèn)題解決

    maven多模塊依賴(lài)版本不一致問(wèn)題解決

    本文主要介紹了maven多模塊依賴(lài)版本不一致問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java中高效判斷數(shù)組中是否包含某個(gè)元素的幾種方法

    Java中高效判斷數(shù)組中是否包含某個(gè)元素的幾種方法

    這是一個(gè)在Java中經(jīng)常用到的并且非常有用的操作,這個(gè)問(wèn)題在Stack Overflow中也是一個(gè)非常熱門(mén)的問(wèn)題,本文將分析幾種常見(jiàn)用法及其時(shí)間成本
    2021-09-09
  • Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件 FTP軟件主界面(4)

    Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件 FTP軟件主界面(4)

    這篇文章主要為大家詳細(xì)介紹了Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件,F(xiàn)TP軟件主界面編寫(xiě)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • java獲取日期之間天數(shù)的方法

    java獲取日期之間天數(shù)的方法

    這篇文章主要介紹了java獲取日期之間天數(shù)的方法,涉及java針對(duì)日期的轉(zhuǎn)換與數(shù)學(xué)運(yùn)算相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07

最新評(píng)論