java 冒泡排序


思路

  1. 將序列當中的左右元素,依次比較,保證右邊的元素始終大於左邊的元素;( 第一輪結束后,序列最后一個元素一定是當前序列的最大值;)
  2. 對序列當中剩下的n-1個元素再次執行步驟1。
  3. 對於長度為n的序列,一共需要執行n-1輪比較

時間復雜度

最佳情況:T(n) = O(n) 最差情況:T(n) = O(n2) 平均情況:T(n) = O(n2)

代碼


import java.util.Arrays;

/**
 * 冒泡排序
 * @author remainsu
 * @version 1.0 2019-05-29
 */
public class BubbleSort {

    /**
     * 排序方法
     * @param arr 要排序的數組
     * @return toString 方便輸出
     */
    public static String bubbleSort(int[] arr) {

        int tmp;
        //int count = 0;
        // 冒泡次數
        for(int a=0; a<arr.length-1; a++ ) {
            
            //count = a+1;
            boolean flag = false;
            // 比較未移動的
            for(int b=0; b<arr.length-a-1; b++ ) {
                // 后面的小於前面的,則互換位置
                if(arr[b+1] < arr[b]) {
                    tmp = arr[b];
                    arr[b] = arr[b+1];
                    arr[b+1] = tmp;
                    
                    //有數據移動,則狀態標位true
                    flag = true;
                }
            }
            //沒有數據移動,即數組已經有序,直接退出
            if(!flag) break;
        }
        
        //System.out.println("冒泡的次數:"+ count);
        return Arrays.toString(arr);
    }
    
    public static void main(String[] args) {
        
        int[] arr = {111, 3, 5, 52, 74, 312, 75, 3, 764, 3, 2111, 7, 31};
        //int[] arr = {1,2,10,3,4,5,6,7,8,9};
        
        System.out.println("排序后的數組:"+ bubbleSort(arr));
    }
    

參考

  1. https://blog.csdn.net/hellozhxy/article/details/79911867


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM