排序與查詢習題

2022-06-03 08:24:08 字數 1897 閱讀 6969

一.對乙個陣列用堆排的方法排序

1 #include 2

using namespace std;

3const

int maxn = 4e3 + 7;

4int

str[maxn];

5void heapadjust(int a, int l, intr)6

15 a[l] =rc;16}

1718

void heapsort(int a, int

n)1928}

2930

intmain()

31

二.鍊錶實現插入排序

1

#define int keytype //

定義 keytype 為 int 型

2 typedef struct

node

3recnode; //

記錄節點型別

8 typedef recnode *linklist; //

單鏈錶用 linklist表示

9void insertsort(linklist head) //

鏈式儲存結構的直接插入排序演算法,head 是帶頭節點的單鏈表

1025

}26 }

三.設計乙個演算法,在盡可能少的時間裡內重排陣列,將所有關鍵字負值記錄放在所有關鍵字非負值記錄之前。o( n ) 的時間複雜度

1

void resort(seqlist r) //

重排陣列,使負值關鍵字在前

214 }

四.寫雙氣泡排序演算法。( 排序過程中交替改變掃瞄方向 )

1

void

bubblesort(seqlist r)

2 //

endif

17 k--;18}

19if

(exchange)

2030 k++;31}

32 i--;33}

34}35 }

五.將兩個遞增的有序的單鏈表合併成乙個遞增有序的單鏈表。( 演算法應利用原有的鍊錶節點空間 )

1

#define keytype int //

定義 keytype 為 int 型

2#define otherinfotype string

3 typedef struct

node

4recnode; //

記錄節點型別

9 typedef recnode *linklist; //

單鏈錶用 linklist表示

10void mergesort(linklist la, linklist lb, linklist lc) //

鏈式儲存結構的直接插入排序演算法,head 是帶頭節點的單鏈表

1125

if(!p->next) p ->next =q;

26free

(lb);

27 }

六.設陣列a[0...n-1]中的 n 個互不相同的整數,且每個元素的值均在 0 到 n - 1 之間,寫乙個時間複雜度為o( n )的演算法對陣列 a 中的

元素進行排序,結果可以輸出到另乙個陣列 b[0...n-1]中。

1

void sort(int a,intb)2

查詢與排序

分治法求最大連續和 include include using namespace std const int maxn 1e5 5 int a maxn int dfs int x,int y return 1 二分法非遞迴 int main a j 1 t return 插入排序 int mai...

排序與查詢

將要處理的資料都載入到記憶體中進行排序 交換式排序,選擇式排序,插入式排序 資料過大無法全部載入到記憶體中,需借助外部儲存器 合併排序,直接合併排序 略直接找值,一般 index 1,借助index的值確定有沒有找到 推薦 略記憶體存在形式 重點 定義時初始化 var arr3 2 3 int 2 ...

Oracle查詢語句練習題,排序, ,in

已知有以下表,資料如圖 create table s emp id number 7 constraint s emp id nn not null,last name varchar2 25 constraint s emp last name nn not null,first name var...