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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法与数据结构(冒泡排序)

發(fā)布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法与数据结构(冒泡排序) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

冒泡排序 Bubble Sort

對序列從前向后,不斷比較兩個相鄰元素的大小,如果逆序,則交換位置,使值較大的元素逐漸從前向后移動,就像水底的氣泡向上浮一樣

冒泡排序規(guī)則:

  • 一共會進行 n-1 次循環(huán)
  • 每一趟循環(huán)排序的次數在減少
  • 有序序列是從隊尾向隊首延伸
  • 如果發(fā)現在某次循環(huán)中沒有發(fā)生任何一次交換,可以提前結束排序

  • 實現:

    第一次循環(huán):從第一位開始,遍歷到最后一位

    第二次循環(huán):從第一位開始,遍歷到倒數第二位(因為此時最后一位已經排好)

    第三次循環(huán):從第一位開始,遍歷到倒數第三位

    …\dots

    第 K 次循環(huán):從第一位開始,遍歷到倒數第 K 位

    …\dots

    第 N-1 次循環(huán):從第一位開始,遍歷到第二位

    排序結束


    優(yōu)化:

    可以在每一次循環(huán)結束后檢查是否發(fā)生了交換,如果沒有交換,可以直接退出排序

    public static void bubbleSort(int[] arr) {boolean flag = true;// 排序for (int i=0; i<arr.length-1;i++) {flag = false;for (int j=0; j<arr.length-1-i; j++) {if (arr[j] > arr[j+1]) {flag = true;int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}// 判斷此次循環(huán)是否沒有發(fā)生交換if (flag == false) {break;}}// 打印結果for (int i=0; i<arr.length; i++) {System.out.println(arr[i]);} }

    時間復雜度分析:

    平均時間復雜度:T(n) = n-1 + n-2 + n-3 + \dots + 2 + 1 = \frac{n(n-1)}{2} = O(n^2)

    最優(yōu)時間復雜度:當序列本來就是正序時,我們還是要遍歷一遍序列,此時的時間復雜度為 T(n) = O(n)

    最壞時間復雜度:當序列本來是倒序時,需要對每一對相鄰的元素進行交換,因此是 T(n) = O(n^2)


    空間復雜度:

    由于全程只需要存儲一個臨時變量,所以空間復雜度為 O(1)


    穩(wěn)定性:

    在冒泡排序中,只有交換操作才可以改變元素的順序。而當兩個元素相等時,排序不做交換,因此冒泡排序是穩(wěn)定的


    相關章節(jié)
    第一節(jié) 簡述
    第二節(jié) 稀疏數組 Sparse Array
    第三節(jié) 隊列 Queue
    第四節(jié) 單鏈表 Single Linked List
    第五節(jié) 雙向鏈表 Double Linked List
    第六節(jié) 單向環(huán)形鏈表 Circular Linked List
    第七節(jié) 棧 Stack
    第八節(jié) 遞歸 Recursion
    第九節(jié) 時間復雜度 Time Complexity
    第十節(jié) 排序算法 Sort Algorithm
    第十一節(jié) 冒泡排序 Bubble Sort
    第十二節(jié) 選擇排序 Select Sort
    第十三節(jié) 插入排序 Insertion Sort
    第十四節(jié) 冒泡排序,選擇排序和插入排序的總結
    第十五節(jié) 希爾排序 Shell’s Sort
    第十六節(jié) 快速排序 Quick Sort
    第十七節(jié) 歸并排序 Merge Sort

    總結

    以上是生活随笔為你收集整理的算法与数据结构(冒泡排序)的全部內容,希望文章能夠幫你解決所遇到的問題。

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