[問題] 一個檢查array內容的功能

看板C_and_CPP作者 (Zoxge)時間7年前 (2017/04/19 20:41), 7年前編輯推噓1(2111)
留言14則, 7人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: Win10, Linux, ...) Linux 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 問題(Question): 有一個一維array,裡面隨機存了20個1~500之間的數字 現在要依序print出1~500之間的數字,但不包含那個一維array裡面的內容 請問除了下面網址內的方法(檢查array中每個index存放的值)之外 有什麼更快的方法能夠解決這個問題呢? 謝謝 程式碼(Code):(請善用置底文網頁, 記得排版) https://ideone.com/1KIzIo -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.228.65 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1492605708.A.BF1.html ※ 編輯: Zoxge (106.1.228.65), 04/19/2017 20:46:45

04/19 21:17, , 1F
Prob_Solve
04/19 21:17, 1F

04/19 21:19, , 2F
開索引500的標記陣列,亂數產生標記不輸出。
04/19 21:19, 2F

04/19 22:00, , 3F
排序後 一切都好做
04/19 22:00, 3F

04/19 23:31, , 4F
先對那20個數字排序 接下來你應該就會了
04/19 23:31, 4F

04/19 23:34, , 5F
如果要用空間換時間的話 就是像上面講的那樣開一個陣列
04/19 23:34, 5F

04/19 23:35, , 6F
存1~500這些數字 然後對那二十個數字跑for迴圈 將這些位
04/19 23:35, 6F

04/19 23:36, , 7F
置的陣列內容改成-1之類的 接下來就看到-1的都不輸出
04/19 23:36, 7F

04/19 23:41, , 8F
也有很多其他方式 例如用500個bit標記要不要輸出之類
04/19 23:41, 8F

04/19 23:41, , 9F
反正就看你的應用需求去做取捨
04/19 23:41, 9F

04/20 08:35, , 10F
hash(?可是才20個元素 liner search才是王者
04/20 08:35, 10F

04/20 08:36, , 11F
先排序然後把 index 放到第一個元素上面吧
04/20 08:36, 11F

04/20 12:44, , 12F
不要排序 時間複雜度太高 空間上用位元陣列操作
04/20 12:44, 12F

04/27 13:07, , 13F
動態刪減找一個刪一個,不過只有20個排序應該最省
04/27 13:07, 13F

04/27 13:08, , 14F
排序有stl可以用 複雜度logn
04/27 13:08, 14F
文章代碼(AID): #1OzriCln (C_and_CPP)
文章代碼(AID): #1OzriCln (C_and_CPP)