bubble sort改進總結

2021-08-17 12:25:20 字數 773 閱讀 7382

氣泡排序是最基礎的排序演算法之一,同時也是一種穩定的排序演算法,其時間複雜度為 o(n2n2

) ,下面貼上清華鄧俊輝老師所編著的資料結構書中氣泡排序及其改進**供個人學習。

原版

template

//向量的起泡排序

void vector::bubblesort ( rank lo, rank hi ) //assert: 0 <= lo < hi <= size

//逐趟做掃瞄交換,直至全序

template

bool vector::bubble ( rank lo, rank hi )

return sorted; //返回有序標誌

}

改進版

template

//向量的起泡排序

void vector::bubblesort ( rank lo, rank hi ) //assert: 0 <= lo < hi <= size

//逐趟做掃瞄交換,直至全序

template rank vector::bubble ( rank lo, rank hi ) 

return

last;//返回最右側的逆序對位置

}

兩個版本區別在於,原版對於幾乎有序的向量來說,效率顯得不足,原因在於,對於每次掃瞄後,對應的規模都是固定的縮減 1 ,而對於改進版本,則是檢查最後一對逆序對的位置,將下一次掃瞄縮減到最小需要掃瞄的區間。

氣泡排序 bubble sort

氣泡排序是最基本的排序演算法,常被做為內部排序的第乙個排序演算法進行講解。它的原理非常簡單,只是一 個兩層迴圈,每次將最大或最小的放到陣列最後。演算法如下 b為陣列的起始位置,e為陣列的結果位置 int bubble int data,int b,int e return n 這個函式返回兩個整數比...

氣泡排序(Bubble Sort)

無論你學習哪種程式語言,在學到迴圈和陣列時,通常都會介紹一種排序演算法來作為例子,而這個演算法一般就是氣泡排序。並不是它的名稱很好聽,而是說這個演算法的思路最簡單,最容易理解。因此,哪怕大家可能都已經學過氣泡排序了,我們還是從這個演算法開始我們的排序之旅。氣泡排序 bubble sort 一種交換排...

氣泡排序 Bubble Sort

維基百科 氣泡排序 演算法思想 不斷的交換相鄰的兩個反序元素,使最小元素 上浮 或使最大元素 下沉 每一趟 冒泡 都會確定乙個最大的元素或最小的元素,同選擇排序類似,演算法總共只需進行n 1趟。將乙個陣列豎著放,低位址在上面,高位址在下面,所謂 上浮 就是較小的元素不斷向低位址靠近,所謂 下沉 就是...