當前位置:首頁 » 操作系統 » 下列演算法的

下列演算法的

發布時間: 2022-01-24 15:12:48

㈠ 1.3 請說明下列演算法的時間復雜度.

這個首先要明確一點,只用到比較的排序演算法最低時間復雜度是O(nlogn),而像桶排這樣的只需要O(R)(R為桶的大小)。
為了證明只用到比較的排序演算法最低時間復雜度是O(nlogn),首先要引入決策樹。
首先決策樹是一顆二叉樹,每個節點表示元素之間一組可能的排序,它予以京進行的比較相一致,比較的結果是樹的邊。
先來說明一些二叉樹的性質,令T是深度為d的二叉樹,則T最多有2^片樹葉。
具有L片樹葉的二叉樹的深度至少是logL。
所以,對n個元素排序的決策樹必然有n!片樹葉(因為n個數有n!種不同的大小關系),所以決策樹的深度至少是log(n!),即至少需要log(n!)次比較。

㈡ 請說明下列演算法的時間復雜度。

(1)O(n)。外層for循環O(n);內層for循環O(1),因為是常數個循環;x+=2為O(1)。則總的時間復雜度為O(n)。
(2)O(n^2)。外層for循環O(n);內層for循環O(n);兩者都是線性時間復雜度。x++為O(1)。則總的時間復雜度為O(n^2)。

㈢ 簡述下列演算法的功能

隊列Q中的元素反轉順序。例如,設剛開始隊列Q中元素為1、2、3、4,調用該方法後,隊列Q中元素順序變為4、3、2、1。

㈣ 請說明下列演算法的時間復雜度

你想問的具體問題是??
如果你是想問這個自定義函數運行的過程:
(1)
自定義函數接收來自主函數的參數
定義整型變數i,x=0
i=0
如果i<n+1
執行for括弧裡面的內容:for(j=1;j<8;j++)遇到for語句,同理
j=1,如果j<8,執行x+=2;然後執行for語句j++,再判斷j<8,執行x+=2、、、、、、、、、
直到j<8不成立,跳出最裡面的for語句

執行外面的for語句,i++
執行for括弧裡面的內容:for(j=1;j<8;j++)遇到for語句,同理
j=1,如果j<8,執行x+=2;然後執行for語句j++,再判斷j<8,執行x+=2、、、、、、、、、
直到j<8不成立,跳出最裡面的for語句

直到判斷i<n+1條件否定
退出自定義函數,返回到主函數

這夠詳細了吧,同理(2)也是這樣類似的過程,希望這是你要的答案,記得給點獎勵我

㈤ 下列演算法的功能是什麼

實現的功能:把L的第一個節點移動到最後一個節點的位置。這樣看就能好理解了,加了一個大括弧。
LinkList testl(LinkList L)
ListNode *p,*p;
if(L&&L->next)
{
q=L; /*保存L最初的,第一個節點位置,在後面需要用到*/

L=L->next;p=L;
while(p->next)
{
p=p->next;
} /*找L的最後節點位置*/
p->next=q;q->next=NULL;
return L;
}

㈥ (數據結構)簡述下列演算法的功能

整個函數的功能是「把一個LinkList倒序輸出」。分析: LStackTP Is,p;DataType x;InitStack(&Is);p=head->next;while(p!=null){Push(&Is,p->data);p=p->next;}【以上一段程序是用於初始化Stack(棧),同時通過while循環把數據一個個壓入堆棧。因為棧是「先進後出的」】 while(!EmptyStack(&Is)){Pop(&Is,&x);p->data=x;p=p->next;}【以上一段程序就是從堆棧中把數據逐一彈出,最先彈出的是最後一次壓入堆棧的數據】

㈦ 下列關於演算法的說法中,正確的是

正確的說法是 D. 演算法是解決問題過程所需的有限步驟。
演算法的性質規定了演算法必須滿足以下幾點:
1 具體(能翻譯成機器指令)
2 明確(無歧義)
3 正確(對任何輸入能給出正確的結果)
4 步數有限(任何情況下總能停機,不會陷入死循環)

㈧ 分析下列演算法的復雜度

答:主要看雙重循環部分,外層循環執行n次,內層循環執行m次,總共執行次數為m×n次,對應時間復雜度為O(n^2)。

㈨ 下列關於演算法的說法中,正確的是()A.演算法是某個問題的解決過程B.演算法可以無限不停地操作下去C.

由演算法的概念可知:
演算法是某個問題的解決方法,而不是某個問題的解決過程,故A不正確;
演算法是在有限個步驟內解決問題,不可以無限不停地操作下去,故B不正確;
演算法的每一步操作都是明確的,演算法執行後的結果是確定的,故C不正確;
解決某類問題的演算法可能有多個,演算法是不唯一的,故D正確.
故選D.

㈩ 下列演算法的功能是什麽

這個函數把你傳入的L結點移動到了最後那個位置。
同時,由於不知道L前面的結點,所以L前面的結點將全部丟失。
也就是新建了一個以L+1為起點,後面不變,最後一個是L的鏈表。
過程如下:
Q=L;L=L->next;P=L; 這個你肯定是能看懂的。
我們定義傳入的L為Head,這樣方便描述。這一句後
Q=Head, L = Head +1, P = Head
然後那個while循環的作用是讓P = End -1;(這里的End的意思是最後那個Null的結尾)

然後,P->Next = Q,這就相當於吧鏈表的end -1 和head連起來了。這時候是個圓圈。
然後q->next = null,把q和L中間的聯系斷開了,這時候又是個普通的鏈表了。這個鏈表的起始是L,結尾是Q

---很奇怪的一個函數。
可能作者的原意是把一個鏈表的首結點移到最後吧。
這就要求函數的使用者必須傳入鏈表的首結點。
順便,函數的參數應該是LinkList* L
如果沒有*的話,這個函數會編譯錯誤。

熱點內容
電腦怎樣編程 發布:2024-10-18 12:06:55 瀏覽:528
圖的鄰接表存儲及遍歷 發布:2024-10-18 12:02:31 瀏覽:495
如何查詢電腦型號的配置 發布:2024-10-18 11:57:42 瀏覽:273
如何開張一個租賃伺服器 發布:2024-10-18 11:46:13 瀏覽:826
python解析json文件 發布:2024-10-18 11:29:34 瀏覽:311
編譯程序的生成程序 發布:2024-10-18 11:29:27 瀏覽:404
軌跡處理演算法 發布:2024-10-18 11:22:25 瀏覽:783
支付密碼怎麼破解 發布:2024-10-18 11:09:19 瀏覽:145
線性鏈表c語言 發布:2024-10-18 11:09:17 瀏覽:785
淘寶賣的腳本可靠嗎 發布:2024-10-18 10:54:04 瀏覽:120