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 上下文圖 繪製用例圖 需求規約 或 用例模...