簡體   English   中英

為什么對未排序數組O(n)進行線性搜索的最佳和最差情況?

[英]Why is the best and worst case of linear search of an unsorted array O(n)?

對於未排序數組的最佳情況和最壞情況,存在一些疑問。

假設未排序的數組中沒有重復的元素。

根據我大學的講師,

未排序數組的最佳情況是O(n),而最壞的情況也是O(n)。 我確實理解為什么未排序數組的最壞情況是O(n),因為如果元素在數組的最后一個索引中,則算法必須搜索所有元素。 但是,未排序數組O(n)的最佳情況如何?

假設用戶輸入了一個可以在未排序數組的第一個索引中找到的數字,為什么仍將最佳情況視為O(n)?

一旦找到元素,它就返回true,並脫離算法,因此最好的情況應該是O(1)。

基於此鏈接 ,它表示盡管找到了元素,該算法仍將繼續搜索,因此,最佳情況是O(n)。

給出的各種答案是,所給出的鏈接不能完全解釋為什么它是O(n)。

這個問題實際上在另一個StackExchange 站點中有所介紹。 該鏈接上的問答將解釋如何計算Big-O表示法。

總而言之,Big-O計算算法的 最壞情況復雜度。 是的,該算法的任何給定特定執行都會有O(1)的極端情況,但是平均而言,用於搜索無序數組的算法將依次遍歷每個元素,直到找到為止。

通常,這是使用for循環類型構造實現的:

for element in list:
    if element == thing_to_match:
        return True
return False

該算法的運行時間為O(n),因為在最壞的情況下, for循環的構造意味着必須查看每個可能的元素。

暫無
暫無

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

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