氣泡排序及其優化

2021-08-14 21:13:26 字數 979 閱讀 3484

課程名稱:

資料結構

實驗專案名稱:排序演算法的實現與比較

實驗目的:

1.掌握優化氣泡排序的演算法

實驗要求:

1、    對於輸入的任意乙個整型資料序列,將其進行氣泡排序,要求該氣泡排序的演算法為優化之後的演算法,即:a.設定flag變數,當一趟排序結束後flag的值未更新,剛說明序列已經有序,停止排序;b. 設定exchange變數,記錄上一趟最後交換的位置,下一趟排序時比較到exchange記錄的位置結束。

實驗過程:

1、  輸入一資料序列儲存在乙個一維陣列中。

2、  對其用普通氣泡排序(未優化)進行排序,並輸出其比較的總次數和交換的總次數;

2、    對其用優化後的氣泡排序進行排序,並輸出其比較的總次和交換的總次數;

實驗報告中給出優化的氣泡排序演算法**。

實驗結果:

1、輸入資料序列:45,24,53,12,37,93。

2、輸出普通氣泡排序後的結果:12,24,37,45,53,93;以及比較的總次數c1=15,交換的總次數e1=6。

輸出優化氣泡排序的結果:12,24,37,45,53,93;以及比較的總次數c2=10,交換的總次數e2=6.

#include #include using namespace std;

#define maxnum 1000

struct elem

;typedef struct node

sqlist;

void bubblesort(sqlist &l)

} l.cmp+=m;

--m; }}

void bubblesort2(sqlist &l)

l.cmp+=1;

} }} int main()

m=l;

bubblesort(l);

cout<<"排序後的數列為:" ;

for(i=1; i<=n; i++)

{ cout<

氣泡排序及其優化

然則 2015年12月30日發布 氣泡排序是比較簡單的,其排序步驟就是比較相鄰元素並將較大的往後移。每掃瞄一輪,將確定乙個元素的位置。實現如下 void sort int a 對氣泡排序的優化主要是減少交換次數。如果一次掃瞄中元素沒有發生交換,那麼排序就可以結束了。為此可設定一標誌量flag,預設為...

氣泡排序及其優化

bubble sort比較簡單,本文首先列出了基礎版本bubble sort的偽 之後做兩點小的優化。1.基礎版本bubblesort 原始版的bubblesort 時間複雜度為o n 2 function bubblesort array x,int length for int i 0 i le...

氣泡排序及其優化

部分使用了utils類,定義在這篇文章中有說明。核心 c 實現 void bubblesort int a,int n for int i n 1 i 0 i 試想一下,如果待排序的序列是 1,2,3,4,5,6,7,9,8 也就是倒數第一和倒數第二個關鍵字需要交換,別的都已經是正常順序,當i 1時...