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

歡迎訪問 生活随笔!

生活随笔

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

java

java中bubblesort是什么意思_排序--冒泡排序BubbleSort(Java)

發布時間:2023/12/19 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中bubblesort是什么意思_排序--冒泡排序BubbleSort(Java) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原理簡述

冒泡排序是最簡單的排序算法之一,主要是通過不斷交換相鄰元素,實現排序。

簡單例子

對[4,2,6,3,2,1]進行升序排序

第一遍(排出最大值)

1.png

第二遍(排出次大值)

2.png

第三遍

3.png

第四遍

4.png

第五遍

5.png

每次循環都通過比較相鄰的元素,逆序就進行交換,每次都將本次循環內的最大元素交換到最后,通過多次循環,最終變為一個有序的數組。

代碼實現Java

public static int[] sort(int[] array){

//數組長度

int length = array.length;

//外層循環

for (int i=0; i

//內層循環

for (int j=0; j

//如果后面的元素比前面的大,交換

if (array[j+1]

int temp = array[j+1];

array[j+1] = array[j];

array[j] = temp;

}

}//內層循環 end

}//外層循環 end

return array;

}

優化

上面數組的例子其實并不好,加入我們要排序的數組為[1,2,3,4,5,6],我們使用上面的算法進行排序,可以發現,即便是一個已經排序好的數組,該走的步驟一步不落,雖然沒有進行交換,但是循環次數和比較次數是一定的。也就是說,這些循環完全是沒有必要的。那么,如何判斷一個數組是有序的呢?

其實可以發現,如果內層循環沒有發生交換,那么數組便已經是有序的,我們便可以退出循環了。我們可以用一個標記,來記錄是否發生了交換,進而判斷是否還要繼續進行排序。

代碼實現

public static int[] sort(int[] array){

int length = array.length;

for (int i=0; i

//用來標記是否需要結束循環

boolean flag = true;

for (int j=0; j

if (array[j+1]

int temp = array[j+1];

array[j+1] = array[j];

array[j] = temp;

//發生了交換,不能結束循環

flag = false;

}

}

//是否結束循環

if (flag){

break;

}

}

return array;

}

通過這個標記,對于數組[1,2,3,4,5,6],內循環只需要進行一次,沒有發生交換,外部循環就會結束,避免了多余的循環。

算法分析

時間復雜度:

最壞情況:O(n^2)

最好情況:O(n)

穩定性:

冒泡排序是穩定的排序,在排序過程中,相等的元素的相對位置不會發生變化。

完整代碼

public class BubbleSort {

public static int[] sort(int[] array){

int length = array.length;

for (int i=0; i

//用來標記是否需要結束循環

boolean flag = true;

for (int j=0; j

if (array[j+1]

int temp = array[j+1];

array[j+1] = array[j];

array[j] = temp;

//發生了交換,不能結束循環

flag = false;

}

}

//是否結束循環

if (flag){

break;

}

}

return array;

}

public static void main(String[] args) {

int[] arr = {1,2,3,4,5,6};

int[] sort = sort(arr);

for (int i : sort) {

System.out.println(i);

}

}

}

總結

以上是生活随笔為你收集整理的java中bubblesort是什么意思_排序--冒泡排序BubbleSort(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。

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