排序:假設含有n個記錄的序列為,其相應的關鍵字為,需確定1,2,.......,n的一種排列p1,p2,.......,pn,使其相應的關鍵字滿足kp1<=kp2<=,......,<=kpn(非遞減或非遞增)關係.即使得序列稱為乙個按關鍵字有序的序列,這樣的操作稱為排序。
假設ki=kj(1<=i<=n,1<=j<=n,i不等於j),且在排序前的序列中ri領先於rj(即i內排序是整個排序過程中,待排序的所用記錄全部被放置在記憶體中。外排序由於記錄個數太多,不能同時放置記憶體,整個排序需要在內外存之間多次交換資料才能進行。
#define maxsize 10 //用於排序陣列個數最大值,可根據需要修改
typedef struct
sqlist;
//交換l中陣列r的下標為i和j的值
void swap(sqlist *l,int i,int j)
氣泡排序是一種交換排序,其基本思想是兩兩比較相鄰記錄的關鍵字,如果反序則交換,知道沒有反序為止。
//對順序表l做交換排序
void bubblesort0(sqlist *l)
}}
//對順序表l作氣泡排序
void bubblesort(sqlist* l)
}}
//對順序表l作改進冒泡演算法
void bubblesort2(sqlist* l)}}
}
總的時間複雜度o(n2) 資料結構 排序之氣泡排序
資料結構 排序 可以通過理解各個排序演算法的不變性來加深對演算法的理解 氣泡排序bubblesort 不變性 out右邊的所有資料項都是有序的。out為outer loop外迴圈體中的變數。the point for out arrlen 1 out 1 out the code public cl...
資料結構之排序 氣泡排序
簡介 氣泡排序屬於交換排序的一種。交換排序就是根據序列中兩個元素關鍵字的比較結果來對換這兩個記錄在序列中的位置。交換排序的演算法有很多,著重需要掌握的有氣泡排序和快速排序。基本思想 長為n的序列表,從前往後 或從後往前 兩兩比較相鄰元素的值,若為逆序,則交換他們,知道所有序列比較完。每一趟冒泡都會將...
資料結構之氣泡排序
2.編寫乙個氣泡排序的演算法,並且在main函式中驗證其功能已實現 氣泡排序 bubble sort 的基本思想,設想排序r 1 到r n 垂直放置,將記錄 r i 看作是重量為r i key的氣泡 根據氣泡不能在重氣泡之下的原則,從下往 上掃瞄陣列r,凡違反原則的輕氣泡,就使其向上 飄浮 如此反覆...