演算法分析3

2021-10-04 00:13:37 字數 770 閱讀 1409

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...