冒泡排序

0.如果遇到相等的值不進(jìn)行交換,那這種排序方式是穩(wěn)定的排序方式。

1.原理:比較兩個相鄰的元素,將值大的元素交換到右邊

2.思路:依次比較相鄰的兩個數(shù),將比較小的數(shù)放在前面,比較大的數(shù)放在后面。

(1)第一次比較:首先比較第一和第二個數(shù),將小數(shù)放在前面,將大數(shù)放在后面。

(2)比較第2和第3個數(shù),將小數(shù) 放在前面,大數(shù)放在后面。
    ......

(3)如此繼續(xù),知道比較到最后的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面,重復(fù)步驟,直至全部排序完成

(4)在上面一趟比較完成后,最后一個數(shù)一定是數(shù)組中最大的一個數(shù),所以在比較第二趟的時候,最后一個數(shù)是不參加比較的。

(5)在第二趟比較完成后,倒數(shù)第二個數(shù)也一定是數(shù)組中倒數(shù)第二大數(shù),所以在第三趟的比較中,最后兩個數(shù)是不參與比較的。

(6)依次類推,每一趟比較次數(shù)減少依次
3.算法復(fù)雜度
此算法的優(yōu)點是每次循環(huán)都會比上一圈少一次
如果數(shù)據(jù)正序只需要一趟排序就可以排完,如果是完全反序則需要O(n^2)
4.代碼實現(xiàn)

package me.hetao;

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
    // write your code here
        int arr[] = {9,6,3,1,2};
        int sortArr[] = bubbleSort(arr);
        System.out.println(Arrays.toString(sortArr));
    }
    public static int[] bubbleSort(int arr[]) {
        int temp;
        for(int i = 0; i < arr.length - 1; i++) {
            for(int j = 0; j < arr.length - i - 1; j++) {
                if(arr[j] > arr[j+1]) {
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        return arr;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容