簡體   English   中英

時間復雜度未排序回溯數組

[英]time complexity unsorted backtraching array

所以我有一個作業,其中有這個方法:

public int backtrackingSearch(int[] arr, int x, int fd, int bk, Stack myStack) 它接收一個未排序的整數數組 arr 並搜索值 x 第一次出現的索引,並在每個 fd 之后添加屬性許多搜索步驟,回溯許多步驟。 如果找到所需的索引或到達數組的 and ,算法將停止。

現在我被問及使用 (A, x, 1, 2) - for 調用 function 時的時間復雜度。 ℎ > 1 > 2 ≥ 0。

這里的時間復雜度我真的很難分析

好的,讓我們嘗試找出時間復雜度,而不是試圖找到運行時 function。為了做到這一點,我們應該檢查最壞的可能情況。 在此示例中,最壞的情況是數組中不存在 x。 所以程序會遍歷整個數組。

但是程序還必須在每前 n1 步后退,這使得過程變慢了。 每次我們嘗試檢查新元素時,我們也向后回溯 n2 個元素,到沒有新元素可供我們檢查的地方。

那么問題來了,這些額外的“規則”對我們原來遍歷整個數組的 n 步有多大影響(當 n 是數組的大小時)? 我們是否為每個元素花費額外的 n 步? - 導致 O(n²) 的復雜性。 還是線性的? - 這意味着我們最初的 n 步僅乘以或添加到不依賴於數組大小的常數。

那么,額外的步驟只取決於 n1 和 n2 的值,對吧? 如果數組的大小加倍,我們預計運行時間也會加倍。 所以當大小增加時,運行時間應該線性增加。

因此,該方法的時間復雜度為 O(n) - 線性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM