1. 程式人生 > >演算法導論第三版第四章思考題

演算法導論第三版第四章思考題

4-1

a.

T(n)=Θ(n4)
先用代入法證明T(n)cn4:

T(n)2c(n2)4+n4=(c8+1)n4
T(n)=O(n4)
再用代入法來證明T(n)cn4
T(n)2c(n2)4+n4=(c8+1)n4
T(n)=Ω(n4)

b.

T(n)=Θ(n)
先用代入法證明T(n)cn:

T(n)710cn+n=(710c+1)n
T(n)=O(n)
再用代入法證明T(n)Ω(n):
T(n)(710c+1)n
T(n)=Ω(n)

c.

T(n)=Θ(n2lgn)
證明略

d.

T(n)=Θ(n2)
證明略

e.

T(n)=Θ(nlog27)
證明略

f.

T(n)=Θ(nlgn)
證明略

g.

T(n)=Θ(n2)
先證明T(n)cn2

T(n)c(n2)2+n2=(c+1)n24c(n1)(c+1)n2
T(n)=O(n2)
然後證明T(n)cn2+d(n+1):
T(n)c(n2)2+d(n1)+n2=(c+1)n2+(d4c)(n1)

相關推薦

演算法導論思考題

4-1 a. T(n)=Θ(n4) 先用代入法證明T(n)≤cn4: T(n)≤2⋅c(n2)4+n4=(c8+1)n4 故T(n)=O(n4) 再用代入法來證明T(n)≥cn4: T(n)≥2⋅c(n2)4+n4=(c8+1)n4 故T(n

演算法導論 合併K個有序連結串列的種解法(最小堆法和分治遞迴法)

題目要求是將k個有序連結串列合併為一個連結串列,時間複雜度限定為O(nlogk)。下面給出應用最小堆方法的兩個程式,最後再貼上利用分治遞迴法的程式碼,雖然時間複雜度不及堆方法,但思路相對簡單好理解。 (1)最小堆方法1 用一個大小為K的最小堆(用優先佇列+自定義降序實現)(

演算法導論 中文 2-25部分課後習題答案

由於最近在學習演算法相關的東西,發現課後的習題沒有答案,給我造成很大困擾,以下分享了從網上找到的答案連結: https://pan.baidu.com/s/1Vy2LjDxTOgYz5gdc0Cjrzg 密碼: nijb

【讀書筆記】演算法導論)第一

練習: 1.1-1 給出現實生活中需要排序的一個例子或者現實生活中需要計算凸殼的一個例子 排序:淘寶銷量排序,凸殼:淘寶綜合排序 注:凸殼是一個點集中最小點集,就像一碗盛著飯的碗,凸殼就是那個碗 1.1-2 除速度外,在真實環境中還可能使用

影象處理-離散傅立葉變換-數字影象處理內容

  影象傅立葉變換方法有很多,可以通過空間光調製器輸入影象後在通過平行光照明經過傅立葉變換透鏡進行傅立葉變換,另一個方法就是利用計算機進行傅立葉變換,其中傅立葉變換有兩種演算法一種是DFT還有一種是FFT(快速傅立葉變換)。   首先我介紹一下影象的定義,影象是怎麼去得到的

Java 線程 極簡同步技巧 讀書筆記

prev ear ont java else 停止 第三版 不同的 結合 一、能避免同步嗎? 取得鎖會由於下面原因導致成本非常高: 取得由競爭的鎖須要在虛擬機的層面上執行很多其它的程序代碼。 要取得有競爭鎖的線程總是必須等到鎖被釋放後。 1. 寄

<深入理解計算機系統()》第一

第一章 計算機系統漫遊 計算機系統是由硬體和系統軟體組成的,它們共同工作來執行應用程式. 1.1 資訊就是位+上下文 源程式實際上就是由一個值0和1組成的位(bit)序列,8個位被組織成一組,稱為位元組.每個位元組表示程式中某個文字字元. 大部分現代系統都是有ASCII標準表示文字字元,只由ASCII字

C語言程式設計() 實驗題 2 任務4

#include <iostream> #include<iomanip> #include<time.h> using namespace std; int main() {     int flag,n1;     char m;     double i=0,a=0,

C語言程式設計() 實驗題 2 任務6

#include <iostream> #include<iomanip> #include<time.h> using namespace std; int main() {     int flag,n1,n2;     char m;     double i=0,l

王爽《組合語言》 實驗十

1、顯示字串 程式碼如下: assume cs:code data segment db 'Welcome to masm!', 0 data ends code segment start:

深入理解計算機系統 家庭作業 答案

3.58long decode2(long x,long y,long z) { int ret; y=y-z; x=x*y; ret=y; ret<<=63; ret>>=63; return ret^x; }算術左移63再右移6

Java語言程序設計()第二課後習題答案(僅供參考)

[] main 是否 支付 都去 port span 時區 div 2.1 註意不同類型轉換 1 import java.util.Scanner; 2 3 public class Ch02 { 4 public static void main

Python實現 《演算法導論 》中的演算法 2 演算法基礎

第2章 演算法基礎 1. 插入排序 P17。插入排序比較簡單。 class InsertionSort: def sort(self, A): for i in range(

Python實現 《演算法導論 》中的演算法 6 堆排序

第6章 堆排序 1. 堆 堆是一個數組,它可以被看成一個近似的完全二叉樹。樹上的每一個結點對應陣列中的一個元素。除最底層外,該樹是完全充滿的,而且是從左向右填充。表示堆的陣列包括兩個屬性:A.le

演算法導論 第一答案

【時間】2018.09.18 【題目】演算法導論第三版第一章答案 一、練習1.1 練習1.1.1 給出一個需要排序的現實示例或需要計算凸包的真實示例。 排序的真例項子非常簡單 - 例如,按字母順序呈現列表的每個網頁都需要對條目進行排序 - 目錄,索引

演算法導論) 課後習題解答

Perface:開始學習演算法導論,在這裡記錄自己的課後習題答案。希望自己能每天堅持更新一節的習題解答。 目前計劃的學習順序:第3部分資料結構和第5部分高階資料結構的全部內容 希望大家有什麼看不懂的地方可以提出來,我會盡量解答的; 如果有什麼出錯的地方,也希望大家能夠指正出來,萬分感謝! 於此同時,如

#006# 快速排序 × 演算法導論)練習 7.1-1 ~ 7.1-4

快排採用經典的分治思想,具體如下↓ 分解:快排的核心步驟,其結果是陣列被分成以某個數為基準的左右兩個子陣列(可能為空),其中左邊的數都小於該基準數,右邊的數都大於該基準數。詳細步驟包括計算基準數下標,以及移動陣列內元素。 解決:通過遞迴呼叫快速排序,對兩個子陣列進行排序。 合併:因為是原址排序,快速排序

演算法導論)練習 10.1-1 ~ 10.1-7 兩個棧實現佇列 兩個佇列實現棧

棧與佇列js實現版本: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title>

【C++習題筆記】譚浩強C++程式設計(

1. 寫兩個函式,分別求兩個整數的最大公約數和最小公倍數,用主函式呼叫這兩個函式,並輸出結果 //兩個函式求最大公約數和最小公倍數 #include <iostream> using namespace std; int main() { int a,b,c,d; int max

演算法導論英文版》電子書附下載連結+30個總結JVM虛擬機器的技術文排版好(收藏版)

技術書閱讀方法論 一.速讀一遍(最好在1~2天內完成) 人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特別好的作用。 對於每一章的知識,先閱讀標題,弄懂大概講的是什麼主題,再去快速看一遍,不懂也沒有關係,但是一定要在不懂的