課程名稱:
資料結構
實驗專案名稱:排序演算法的實現與比較
實驗目的:
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時...