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

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

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

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

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

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

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

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

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

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

排序過程

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

代碼實(shí)現(xiàn):

// 冒泡排序   
public class BubbleSort{
  public static void sort(Comparable[] data){
    // 數(shù)組長度 
    int len = data.length; 
    for (int i = 0; i < len - 1; i++){
      // 臨時(shí)變量 
      Comparable temp = null; 
      // 交換標(biāo)志,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ā)生了交換,故將交換標(biāo)志置為真 
          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ù)類型可以自動(dòng)裝箱
    // int,double等基本類型的包裝類已實(shí)現(xiàn)了Comparable接口
    Comparable[] c = { 4, 9, 23, 1, 45, 27, 5, 2 };
    sort(c);
    for (Comparable data : c){
      System.out.println(data);
    }
  }
}

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

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

相關(guān)文章

  • 簡單了解springboot中的配置文件相關(guān)知識(shí)

    簡單了解springboot中的配置文件相關(guān)知識(shí)

    這篇文章主要介紹了簡單了解springboot中的配置文件相關(guān)知識(shí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 詳解spring applicationContext.xml 配置文件

    詳解spring applicationContext.xml 配置文件

    本篇文章主要介紹了詳解spring applicationContext.xml 配置文件 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • springboot啟動(dòng)的注意事項(xiàng)之不同包下有同樣名字的class類問題

    springboot啟動(dòng)的注意事項(xiàng)之不同包下有同樣名字的class類問題

    這篇文章主要介紹了springboot啟動(dòng)的注意事項(xiàng)之不同包下有同樣名字的class類問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • java設(shè)計(jì)模式策略模式圖文示例詳解

    java設(shè)計(jì)模式策略模式圖文示例詳解

    這篇文章主要為大家介紹了java設(shè)計(jì)模式策略模式圖文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • JAVA中static方法的用法實(shí)例詳解

    JAVA中static方法的用法實(shí)例詳解

    這篇文章主要介紹了JAVA中static方法的用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Java中static方法的功能、使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2015-12-12
  • 基于Java protected的深入理解

    基于Java protected的深入理解

    本篇文章是對(duì)Java protected進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Java SoftReference類案例詳解

    Java SoftReference類案例詳解

    這篇文章主要介紹了Java SoftReference類案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • java交換排序之奇偶排序?qū)崿F(xiàn)方法

    java交換排序之奇偶排序?qū)崿F(xiàn)方法

    這篇文章主要介紹了java交換排序之奇偶排序?qū)崿F(xiàn)方法,實(shí)例分析了奇偶排序的原理與具體實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-02-02
  • Java?SpringBoot?獲取接口實(shí)現(xiàn)類匯總

    Java?SpringBoot?獲取接口實(shí)現(xiàn)類匯總

    這篇文章主要介紹了Java?SpringBoot?獲取接口實(shí)現(xiàn)類匯總,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Mybatis中BindingException異常的產(chǎn)生原因及解決過程

    Mybatis中BindingException異常的產(chǎn)生原因及解決過程

    BindingException異常是MyBatis框架中自定義的異常,顧名思義指的是綁定出現(xiàn)問題,下面這篇文章主要給大家介紹了關(guān)于MyBatis報(bào)錯(cuò)BindingException異常的產(chǎn)生原因及解決過程,需要的朋友可以參考下
    2023-06-06

最新評(píng)論