一.對乙個陣列用堆排的方法排序
1 #include 2using 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三.設計乙個演算法,在盡可能少的時間裡內重排陣列,將所有關鍵字負值記錄放在所有關鍵字非負值記錄之前。o( n ) 的時間複雜度#define int keytype //
定義 keytype 為 int 型
2 typedef struct
node
3recnode; //
記錄節點型別
8 typedef recnode *linklist; //
單鏈錶用 linklist表示
9void insertsort(linklist head) //
鏈式儲存結構的直接插入排序演算法,head 是帶頭節點的單鏈表
1025
}26 }
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六.設陣列a[0...n-1]中的 n 個互不相同的整數,且每個元素的值均在 0 到 n - 1 之間,寫乙個時間複雜度為o( n )的演算法對陣列 a 中的#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 }
元素進行排序,結果可以輸出到另乙個陣列 b[0...n-1]中。
1void 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...