最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java排序算法總結(jié)之冒泡排序

 更新時間:2015年05月19日 10:41:57   作者:一羽清寧  
這篇文章主要介紹了Java排序算法總結(jié)之冒泡排序,較為詳細的分析了冒泡排序的原理與java實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了Java排序算法總結(jié)之冒泡排序。分享給大家供大家參考。具體分析如下:

前言:冒泡排序(BubbleSort)就是依次比較相鄰的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面。

下面讓我們一起    來看冒泡排序在Java中的算法實現(xiàn)。

冒泡排序是計算機的一種排序方法,它的時間復雜度為O(n^2),雖然不及堆排序、快速排序的O(nlogn,底數(shù)為2),但是有兩個優(yōu)點:

1.“編程復雜度”很低,很容易寫出代碼;
2.具有穩(wěn)定性,這里的穩(wěn)定性是指原序列中相同元素的相對順序仍然保持到排序后的序列,而堆排序、快速排序均不具有穩(wěn)定性。

不過,一路、二路歸并排序、不平衡二叉樹排序的速度均比冒泡排序快,且具有穩(wěn)定性,但速度不及堆排序、 
快速排序。冒泡排序是經(jīng)過n-1趟子排序完成的,第i趟子排序從第1個數(shù)至第n-i個數(shù),若第i個數(shù)比后一個數(shù)大
(則升序,小則降序)則交換兩數(shù)。

冒泡排序算法穩(wěn)定,O(1)的額外的空間,比較和交換的時間復雜度都是O(n^2),自適應(yīng),對于已基本排序的算法,時間復雜度為O(n)。冒泡算法的許多性質(zhì)和插入算法相似,但對于系統(tǒng)開銷高一點點。

排序過程

設(shè)想被排序的數(shù)組R[1..N]垂直豎立,將每個數(shù)據(jù)元素看作有重量的氣泡,根據(jù)輕氣泡不能在重氣泡之下的原則,從下往上掃描數(shù)組R,凡掃描到違反本原則的輕氣泡,就使其向上"漂浮",如此反復進行,直至最后任何兩個氣泡都是輕者在上,重者在下為止。

代碼實現(xiàn):

// 冒泡排序   
public class BubbleSort{
  public static void sort(Comparable[] data){
    // 數(shù)組長度 
    int len = data.length; 
    for (int i = 0; i < len - 1; i++){
      // 臨時變量 
      Comparable temp = null; 
      // 交換標志,false表示未交換 
      boolean isExchanged = false; 
      for (int j = len - 1; j > i; j--){
        // 如果data[j]小于data[j - 1],交換 
        if (data[j].compareTo(data[j - 1]) < 0){
          temp = data[j]; 
          data[j] = data[j - 1]; 
          data[j - 1] = temp; 
          // 發(fā)生了交換,故將交換標志置為真 
          isExchanged = true; 
        }// end if 
      }// end for 
      // 本趟排序未發(fā)生交換,提前終止算法,提高效率 
      if (!isExchanged){
        return; 
      }// end if 
    }// end for 
  }// end sort 
  public static void main(String[] args){
    // 在JDK1.5版本以上,基本數(shù)據(jù)類型可以自動裝箱
    // int,double等基本類型的包裝類已實現(xiàn)了Comparable接口
    Comparable[] c = { 4, 9, 23, 1, 45, 27, 5, 2 };
    sort(c);
    for (Comparable data : c){
      System.out.println(data);
    }
  }
}

使用冒泡排序法對n個數(shù)據(jù)進行排序,共需要進行n-1次的比較。如果本來就是有順序的數(shù)據(jù),也需要進行n-1次比較。冒泡排序法的算法很簡單,效率也較差。

希望本文所述對大家的java程序設(shè)計有所幫助。

相關(guān)文章

  • Spring Boot中@Conditional注解介紹

    Spring Boot中@Conditional注解介紹

    @Conditional表示僅當所有指定條件都匹配時,組件才有資格注冊。該@Conditional注釋可以在以下任一方式使用:作為任何@Bean方法的方法級注釋、作為任何類的直接或間接注釋的類型級別注釋@Component,包括@Configuration類、作為元注釋,目的是組成自定義構(gòu)造型注釋
    2022-09-09
  • Java小程序求圓的周長和面積實例

    Java小程序求圓的周長和面積實例

    這篇文章主要介紹了首先用蒙塔卡洛算法求圓周率近似值,然后根據(jù)此近似值輸出圓的周長和面積,具有一定參考價值,需要的朋友可以了解下。
    2017-09-09
  • Java程序中使用JavaMail發(fā)送帶圖片和附件的郵件

    Java程序中使用JavaMail發(fā)送帶圖片和附件的郵件

    這篇文章主要介紹了Java程序中使用JavaMail發(fā)送帶圖片和附件的郵件,JavaMail是專門用來處理郵件的Java API,需要的朋友可以參考下
    2015-11-11
  • MyBatisPlus中CRUD使用方法詳解

    MyBatisPlus中CRUD使用方法詳解

    通用CRUD封裝,BaseMapper(opens new window)接口,為Mybatis-Plus啟動時自動解析實體表關(guān)系映射轉(zhuǎn)換為Mybatis內(nèi)部對象注入容器
    2023-01-01
  • spring mvc高級技術(shù)實例詳解

    spring mvc高級技術(shù)實例詳解

    前面學習了簡單的Spring Web知識,接著學習更高階的Web技術(shù)。下面這篇文章主要給大家介紹了spring mvc高級技術(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起看看吧
    2018-09-09
  • Java基礎(chǔ)學習之ArrayList類概述與常用方法

    Java基礎(chǔ)學習之ArrayList類概述與常用方法

    這篇文章主要為大家簡單的介紹Java中ArrayList類的概述、常用方法及存儲字符串并遍歷,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-08-08
  • maven依賴傳遞和依賴沖突原理

    maven依賴傳遞和依賴沖突原理

    這篇文章主要介紹了maven依賴傳遞和依賴沖突原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • SpringBoot3通過GraalVM生成exe執(zhí)行文件問題

    SpringBoot3通過GraalVM生成exe執(zhí)行文件問題

    文章介紹了如何安裝GraalVM和Visual Studio,并通過Spring Boot項目將Java應(yīng)用程序封裝成可執(zhí)行文件(.exe)
    2024-12-12
  • Java中的這些騷操作你不能不知道!!!

    Java中的這些騷操作你不能不知道!!!

    今天在看python相關(guān)的東西,看到各種騷操作,回頭想了下Java有沒有什么騷操作,整理下面幾種,一起看一下吧,希望能給你帶來幫助
    2021-07-07
  • Go Java算法之K個重復字符最長子串詳解

    Go Java算法之K個重復字符最長子串詳解

    這篇文章主要為大家介紹了Go Java算法之K個重復字符最長子串詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08

最新評論

宜春市| 丰都县| 岗巴县| 开封市| 利川市| 安丘市| 繁峙县| 平乡县| 兴安县| 淮南市| 蕲春县| 顺义区| 平塘县| 辽阳县| 阳信县| 鄂州市| 阿图什市| 河曲县| 崇文区| 南昌县| 太白县| 仙桃市| 思茅市| 土默特右旗| 化州市| 花莲县| 高阳县| 广灵县| 平定县| 湘西| 鹤山市| 西华县| 安岳县| 襄樊市| 肥城市| 开平市| 兖州市| 德保县| 木兰县| 乌鲁木齐县| 和田市|