1.問題
[描述演算法問題,首選形式化方式(數學語言),其次才是非形式化方式(日常語言)]
寫出兩種檢索演算法:在乙個排好序的陣列t[1…n]中查詢x,如果x在t中,輸出x在t的下標j;如果x不在t中,輸出j=0.
2.解析
[問題的理解和推導,可用電子版直接在此編寫,也可用紙筆推導,拍照嵌入本文件]
1) 順序查詢
順序查詢類似陣列遍歷,從陣列的第乙個元素開始,檢查陣列的每乙個元素,以便確定是否有查詢的資料。
(2) 對分查詢
對分查詢適用於順序儲存結構且關鍵字有序排列的情況。首先,將陣列中間位置記錄的關鍵字與查詢關鍵字比較,若兩者相等,則查詢成功。否則利用中間位置記錄將陣列分為前後兩個子陣列,若中間位置記錄的關鍵字大於查詢關鍵字,則查詢前一子陣列,否則查詢後面的子陣列。重複以上過程,直到找到滿足條件的記錄,查詢成功,或直到不存在子陣列為止。
3.設計
[核心偽**]
對分查詢:
int duifen_search(int a, int n, int key)
else if (key > a[m])
else
}return -1;
}順序查詢:
int shunxu_search(int a, int n, int key)
return -1;
}4.分析
[演算法複雜度推導]
順序查詢:o(n)
二分查詢:o(log2(n))
5.原始碼
[github原始碼位址]
演算法分析3
1.題目描述 給定一32 位int數a 判斷一下 a a 和a a a 誰比較大。輸入 多樣例輸入,每個樣例一行,為乙個 int數。輸出 每個樣例輸出一行。如果a a a a a 輸出 如果 a a a a a 輸 如果 a a a a a 輸出 sample input 2 2 sample ou...
演算法分析設計 作業3 檢索演算法
寫出兩種檢索演算法 在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0。一 順序查詢 順序查詢也稱為線性查詢,屬於無序查詢演算法,適用於儲存結構為順序結構或鏈式儲存的線性表。從資料結構線性表的一端開始,順序掃瞄,依次將掃瞄到的節點關鍵字與給定查詢的x...
演算法設計與分析 實驗3
一 實驗目的和要求 學習程式設計實現深度優先搜尋狀態空間樹求解實際問題的方法,著重體會求解第乙個可行解和求解所有可行解之間的差別。加深理解回溯法通過搜尋狀態空間樹 同時用約束函式剪去不含答案狀態子樹的演算法思想,會用蒙特卡羅方法估計演算法實際生成的狀態空間樹的結點數。二 實驗環境 實驗裝置 vsia...