日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java十大排序算法总结,Java排序算法总结之冒泡排序

發布時間:2023/12/19 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java十大排序算法总结,Java排序算法总结之冒泡排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

下面讓我們一起??? 來看冒泡排序在Java中的算法實現。

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

1.“編程復雜度”很低,很容易寫出代碼;

2.具有穩定性,這里的穩定性是指原序列中相同元素的相對順序仍然保持到排序后的序列,而堆排序、快速排序均不具有穩定性。

不過,一路、二路歸并排序、不平衡二叉樹排序的速度均比冒泡排序快,且具有穩定性,但速度不及堆排序、

快速排序。冒泡排序是經過n-1趟子排序完成的,第i趟子排序從第1個數至第n-i個數,若第i個數比后一個數大

(則升序,小則降序)則交換兩數。

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

排序過程

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

代碼實現:

// 冒泡排序

public class BubbleSort{

public static void sort(Comparable[] data){

// 數組長度

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;

// 發生了交換,故將交換標志置為真

isExchanged = true;

}// end if

}// end for

// 本趟排序未發生交換,提前終止算法,提高效率

if (!isExchanged){

return;

}// end if

}// end for

}// end sort

public static void main(String[] args){

// 在JDK1.5版本以上,基本數據類型可以自動裝箱

// int,double等基本類型的包裝類已實現了Comparable接口

Comparable[] c = { 4, 9, 23, 1, 45, 27, 5, 2 };

sort(c);

for (Comparable data : c){

System.out.println(data);

}

}

}

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

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

總結

以上是生活随笔為你收集整理的Java十大排序算法总结,Java排序算法总结之冒泡排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。