資料結構系列 排序演算法及其實現

2021-10-05 14:24:41 字數 2896 閱讀 7913

(1)排序的穩定性

(2)內排序和外排序

氣泡排序是一種交換排序。

氣泡排序是一種交換排序。

基本思想:兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。

簡單選擇排序就是通過n-i次關鍵字間的比較,從n-i+1個記錄中選出關鍵字最小的記錄,並和第i(1<=i<=n)個記錄交換之。

直接插入排序的基本操作是將乙個記錄插入到已經排好序的有序表中,從而得到乙個新的、記錄數增1的有序表。

將整個序列分割成若干子串行,在這些子串行內分別進行直接插入排序,當整個序列都基本有序時,再對全體記錄進行一次直接插入排序。

堆排序是對簡單選擇排序的一種改進。

#include

#include

#define maxsize (100)

typedef

struct sqlist

sqlist;

// 交換l中陣列r的下標i和j的值

void

swap_function

(sqlist *l,

int i,

int j)

intprint

(sqlist *l)

printf

("\n");

return0;

}// 1.氣泡排序演算法

// 氣泡排序是一種交換排序,基本思想是:兩兩比較記錄的關鍵字,如果反序則交換,

// 直到沒有反序的記錄為止。

// 氣泡排序初級版本(交換排序)

void

bubblesort0

(sqlist *l)}}

}// 2.氣泡排序法

void

bubblesort

(sqlist *l)}}

}// 3.氣泡排序的改進演算法

void

bubblesort2

(sqlist *l)}}

}// 4. 簡單選擇排序演算法

void

******selectsort

(sqlist *l)}if

(i!=min)}}

// 5、直接插入排序

void

insertsort

(sqlist *l)

l->r[j+1]

= l->r[0]

;}}}

// 6、希爾排序(增量排序)

void

shellsort

(sqlist *l)

l->r[j+increment]

= l->r[0]

;// 插入}}

}while

(increment >1)

;}// 7、堆排序

//已知l->r[s..m]中記錄的關鍵字除了l->r[s]之外均滿足堆的定義

void

heapadjust

(sqlist *l,

int s,

int m)

l->r[s]

= l->r[j]

; s = j;

} l->r[s]

= temp;

// 插入

}void

heapsort

(sqlist *l)

for(i = l->length; i>

1; i--)}

// 8、歸併排序

// 9、快速排序

intmain

(int argc,

char

* ar**)

; sqlist l0,l1,l2,l3,l4,l5,l6,l7,l8;

for(i =

0; i <

9; i++

) l0.r[i+1]

=array[i]

; l0.length =9;

l1 = l2 = l3 = l4 = l5 = l6 = l7 = l8 = l0;

print

(&l0)

;// 1、交換排序

bubblesort0

(&l0)

;printf

("bubblesort0: ");

print

(&l0)

;// 2、氣泡排序

bubblesort

(&l1)

;printf

("bubblesort: ");

print

(&l1)

;// 3、氣泡排序優化

bubblesort2

(&l2)

;printf

("bubblesort2: ");

print

(&l2)

;// 4、簡單選擇排序

******selectsort

(&l3)

;printf

("******selectsort: ");

print

(&l3)

;// 5、直接插入排序

insertsort

(&l4)

;printf

("insertsort: ");

print

(&l4)

;// 6、希爾排序(增量排序)

shellsort

(&l5)

;printf

("shellsort: ");

print

(&l5)

;// 7、堆排序

heapsort

(&l6)

;printf

("heapsort: ");

print

(&l6)

;// 8、歸併排序

// 9、快速排序

return0;

}

常用排序演算法及其實現

1.插入排序 遍歷陣列 n 將每個元素插入到前面子串行的合適位置 插入時採取前面的部分元素後移,再將本元素填在適當位置的方法 模擬 12 30 9 100 1 3 10 12 30 9 100 1 3 10 9 12 30 100 1 3 10 9 12 30 100 1 3 10 1 9 12 3...

常用排序演算法及其實現

1.插入排序 遍歷陣列 n 將每個元素插入到前面子串行的合適位置 插入時採取前面的部分元素後移,再將本元素填在適當位置的方法 模擬 12 30 9 100 1 3 10 12 30 9 100 1 3 10 9 12 30 100 1 3 10 9 12 30 100 1 3 10 1 9 12 3...

資料結構 2 1線性表及其實現

線性結構是資料結構裡面最基礎最簡單的一種資料結構型別,最典型的一種叫做線性表。舉個例子 如何用程式語言來表示這樣的乙個一元多項式及其相應的操作運算呢?順序儲存結構直接表示 用乙個陣列儲存第i項的係數ai,而指數對應這個分量的下標 這樣帶來的問題是什麼呢?假如我要表示x的兩千次方,陣列的大小就需要20...