java冒泡排序经典代码_Java干货分享:冒泡排序(Java中@)
不管學習什么編程語言,冒泡排序都是每一個走上IT路的小伙伴的必經之路。但是還有好多小伙伴對冒泡排序摸不著頭腦,今天知了堂小編就來分享一下經典算法——冒泡排序。
首先咱們舉個金魚吐泡泡的例子來理解冒泡排序的過程:金魚吐出的一連串泡泡就是我們要排序的數據,數據就像泡泡浮上水面一樣一個一個被排好序,吐出的泡泡越大就會越快浮出水面,相應的,數據里某一個數字越大,那么就能越快的被排好序,當然最大的數字也是第一個被排好順序的。
但是冒泡排序究竟是怎么比較數字的大小來排序的呢?其實冒泡排序的原理很簡單,把兩個挨在一起的數字進行比較大小,大數放在后面,較小的數放在前面。每遍歷一次數據,就將一個最大的數放在整個數據的末尾,當遍歷結束后,整個數據就被排好了序。
有小伙伴看到這里或許會問了:“怎么知道冒泡排序要遍歷多少遍呢?”咱們還是根據冒泡排序的原理來判斷,每兩個數字就要比較一次,那么三個數字就要比較兩次,依次排下去可以得到一個結論:如果一個數據有n個元素,那么冒牌排序就需要對數據遍歷n-1次。
接下來咱們假設有一串數字需要從小到大排序,給大家用數據和圖片演示一次。以下圖的數據為例,可以得知5個數字需要遍歷4次。
第一次遍歷:(1)17與5比較,17>5,這時最大的數是17,那么17與5交換;(2)17與20比較,17<20,此時最大的數變成了20,20與17交換;(3)20與8比較,20>8,20與8交換;(4)20與11比較,20>11,20與11交換。因此,第一次遍歷后得到最大數為20,排序結果為下圖。
由于第一次遍歷時,最大值20已經排在末尾,因此在第二次遍歷時,就不需要再比較20。
第二次遍歷:(1)5與17比較,5<17,最大值為17,順序不變;(2)17與8比較,17>8,17與8交換;(3)17與11比較,17>11,17與11交換。第二次遍歷后得到此次遍歷中的最大值17,的結果為下圖。
經過兩次遍歷后,我們發現數據的順序已經按由大到小排序了,但是計算機并不知道,所以之后的兩次遍歷依舊會按照剛才的排序方法進行,但是沒有數字會改變位置,直到遍歷結束。
小伙伴們也可以看看下面的動圖,讓思路更加清晰。
根據上面咱們分享的冒泡排序的過程,可以總結出以下在使用冒泡排序時需要注意的地方:
1、 有n個數,就需要進行n-1次遍歷。
2、 每一次遍歷都是一個循環,由于每次遍歷都需要將數據兩兩比較,因此在大循環下還有一個小循環。
3、 在每一次遍歷結束之后,都會找到一個當前的最大值,這個最大值在結束遍歷時的位置是固定的,因此接下來的遍歷不需要再比較這個最大值,所以每個小循環的次數都會比上一次小循環的次數-1。
相信小伙伴們已經懂得了冒泡排序的原理和排序邏輯,那么下面用代碼給小伙伴們分享Java代碼是如何實現冒泡排序的。
public class BubbleSort {
public static void bubbleSort(int[] arr) {
if (arr==null||arr.length==1)
return;
for (int i = 0; i < arr.length-1; i++) {
boolean isSorted=true;
for (int j = 0; j < arr.length-i-1; j++) {
if(arr[ j ]>arr[ j+1 ]) {
int temp=arr[ j ];
arr[ j]=arr[ j+1];
arr[ j+1]=temp;
isSorted=false;
}
}
if(isSorted)
return;
System.out.print("第"+(i+1)+"次遍歷結果:");
print(arr);
}
}
public static void main(String[] args) {
int[] arr= {17,5,20,8,11};
System.out.print("排序前的順序為:");
print(arr);
bubbleSort(arr);
System.out.print("排序后的順序為:");
print(arr);
}
private static void print(int[] arr) {
if (arr==null)
return;
for (int i :arr) {
System.out.print(i+" ");
}
System.out.println();
}
}
看完之后是不是覺得冒泡排序一下就變得簡單了?今天的分享就到這里了,想獲取更多Java干貨和行業知識,關注我們哦~
總結
以上是生活随笔為你收集整理的java冒泡排序经典代码_Java干货分享:冒泡排序(Java中@)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GIT项目管理工具(part6)--放弃
- 下一篇: 彩票积分活动宣传文案30句