簡體   English   中英

在數組中查找不同值的O(1)空間復雜度的O(N ^ 2)時間復雜度

[英]Alternative O(N^2) time complexity with O(1) space complexity for finding distinct values in array

我正在嘗試查看是否有替代蠻力算法(或對朴素蠻力算法的輕微改進/最差性能)的替代方案,這些替代方案仍會導致O(N ^ 2)時間復雜度和O(1)輔助空間。

這是我的蠻力偽代碼:

    procedure distinct(Input: array)                             
        for i=0 to i < length of array                      
            for j=i+1 to j < length of array                 
               if array[i] == array[j] and i != j then  
                  return false                        
               end if
               increment k
            end for
            increment j
        end for
        return true
    end procedure

我知道蠻力算法是一個糟糕的解決方案,有很多方法可以實現更好的性能(使用數據集或實現O(N)時間復雜度和O(1)空間復雜度),但是出於純粹的興趣,我試圖找出O(N ^ 2)最壞情況下的時間復雜度和O(1)空間復雜度。 可能嗎?

我以為我可以應用排序算法(例如Bubble或Insertion排序),然后使用for循環遍歷排序數組,但這是否仍會給我二次函數而不是O(N ^ 3)?

使用heapsort對數組進行排序,並在找到兩個相等的元素時停止:

  • O(NLogN)時間復雜度
  • O(1)空間復雜度

您也可以尋找其他的(更先進的算法)用於此目的這里

選擇和插入排序是2種選擇,分別是:

  • O(NxN)時間復雜度
  • O(1)空間復雜度

暫無
暫無

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

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