CLRS 2 2分析演算法

2021-07-03 21:50:45 字數 786 閱讀 1997

2.2-1 θ(

n3)

2.2-2

偽**如下:

selection-sort(a):

for i = 1

to a.length - 1

min = i

for j = i + 1

to a.length

if a[j] < a[min]

min = j

temp = a[i]

a[i] = a[min]

a[min] = temp

執行**如下:

void selection_sort(int *array,int

length)

}

迴圈不變式:在第乙個 for 迴圈開始迭代前,子陣列a[1…i-1]包含了陣列前 i-1 個最小數,且此子陣列已經按非遞減順序排好,在第乙個 for 迴圈開始迭代中,min 指示a[i..j−1]中最小數的下標。

之所以只需對前 n-1 個元素,是因為每次外面的 for 迴圈都會找出乙個未排序的子陣列中最小的的元素,執行 n-1 次後,前 n-1 個元素是陣列前 n-1 個最小數,且已經排序,最後只剩最大的元素放在最末尾的位置,這樣陣列就排序完成。若進行 n 次,則最後一次是多餘的。

最好和最壞的情況都需要θ(

n2) 。

2.2-3

平均是檢查一半,最壞情況下所有元素都要檢查,所以都是θ(

n)。2.2-4

我們檢查是否已經排序,假如已經排序好了就直接返回。

2 2分析演算法(隨手筆記)

目的 選出一種最有效的演算法。描述所用資源和代價的模型 隨機訪問機 ram 對insertion sort的分析 1.重要概念 輸入規模,執行時間。2.對於給定規模的輸入,插入排序的執行時間依賴於具體的輸入。最佳情況的執行時間為an b,最壞情況的執行時間為an2 bn c。3.出於對執行時間的保證...

演算法導論 2 2分析演算法練習題 python描述

2.2分析演算法練習題 python描述 2.2 1 n 3 2.2 2 a 99 38 65 97 76 13 27 49 排序過程 a 13,38,65,97,76,99,27,49 a 13,27,65,97,76,99,38,49 a 13,27,38,97,76,99,65,49 a 13...

需求分析 5 分析流程

1 小型流程 需求工作項 提交的文件 所處需求層次 業務目標 目標列表 業務需求 繪製用例圖 需求規約 或 用例模型 使用者需求 編寫用例規約 行為需求 2 中型流程 需求工作項 提交的文件 所處需求層次 業務目標 願景文件 業務需求 範圍 feature 上下文圖 繪製用例圖 需求規約 或 用例模...