第八章 排序技術

2021-10-20 16:34:58 字數 1559 閱讀 4508

一、歸併排序

將原序列分成若干個子串行,然後重組

#include.h>

using namespace std;

const int n=9

;int a[n]

=;int temp[n]

;void

msortroot

(int f,int e,int mid)

while

(i//排序後有遺漏需再次填入

while

(j<=e)

k=f;

while

(h<=e)

//賦值給a

}void

msort

(int f,int e)

}int main()

二、快速排序

找到軸值k,然後左邊右邊分別遞迴尋找

1、我自己寫的(遇到大資料直接tle

#include.h>

using namespace std;

const int n

=10000010

;int a[n]

;int qsort1

(int f,int e)

while

(i<=a[j]

) i++;if

(i}return i;

}void

qsort2

(int f,int e)

}int main()

2、大佬寫的

#include

using namespace std;

int n,a[

1000001];

void

qsort

(int l,int r)

//應用二分思想

}while

(i<=j)

;//這裡注意要有=

if(lqsort

(l,j)

;//遞迴搜尋左半部分

if(iqsort

(i,r)

;//遞迴搜尋右半部分

}int main()

三、直接插入排序

如果發現a[i].h>

using namespace std;

const int n

=1000010

;int a[n]

;void

isort

(int n)

}int main()

四、希爾排序

直接插入的優化,在分組中將問題簡化

#include.h>

using namespace std;

const long long n

=1000010

;long long a[n]

;void

isort

(int n)

a[j+d]

=a[0];

}}}int main()

第八章 排序技術

排序共分為5大類,插入 交換 選擇 歸併 分配。他們的穩定性及平均時間效能如下圖 這是幾種排序演算法的簡單思想 1.直接插入排序 每一趟將乙個待排序的記錄,按其關鍵字的大小插入到已經排好序的一組記錄的適當位置上,直到所有待排序記錄全部插入為止。2.希爾排序 先取乙個小於n的整數d1作為第乙個增量,把...

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

第八章 排序 選擇排序

資料結構基礎 嚴蔚敏 人郵教育出版社 簡單選擇排序 include intselectionsort int a,int n t a i a i a minj a minj t sw if i minj return sw int main sw selectionsort a,n for i 0 ...