我想寫一個函數,以正確的順序將項添加到列表中,例如1
,其中[2, 3]
。我是haskell的新手,需要關於如何在不使用Ord
的情況下提供幫助。將元素添加到列表中
0
A
回答
1
編寫一個將元素插入到排序列表中的函數並不難。它看起來像這樣:
insert :: Ord a => a -> [a] -> [a]
insert x [] = [x]
insert x (y:ys)
| x > y = y : insert x ys
| otherwise = x : y : ys
但是,這對您的用例來說不太可能有效。列表的問題是,最終你會用這種插入問題重複創建大部分脊柱的新副本。您還必須在列表中線性掃描,直到找到正確的位置,這不是搜索正確位置的最快方法。
使用數據結構(如Data.Set或Data.IntSet中的數據結構)可能會更好。這些通常用於插入O(log n),因爲它們使用樹或其他數據結構,允許進行比列表更多的共享,並快速找到正確的位置。
+0
需要說明的是,對於較大的n(列表/集合大小),O(log n)明顯優於O(n),如果您按照您的建議使用列表,則會得到該結果。 – chrisdb 2011-03-13 22:08:11
+0
我必須返回[a]嗎?你能否詳細說明答案? – 2017-02-22 14:11:14
2
相關問題
- 1. 將元素添加到用戶列表
- 2. 將元素添加到Json列表(Python)
- 3. 將XML元素添加到列表框
- 4. 將數據添加到列表元素
- 5. 將空元素添加到列表
- 6. 將元素一次添加到列表中的兩個元素
- 7. 將列表中的元素添加到另一個列表中
- 8. 如何將新元素添加到列表中的pandas.DataFrame列?
- 9. 將元組添加到列表列表
- 10. 將元素列表添加到鏈接列表
- 11. 列表元素將不會添加到新列表(Python)
- 12. 將元素添加到R中的指定data.frames列表中
- 13. 將元素添加到序言中的列表中
- 14. 將列表中的元素添加到集合中?
- 15. OCaml:將元素添加到數組中的列表中
- 16. 如何將元素添加到Groovy中的列表中?
- 17. 將元素添加到R中列表的組件中動態
- 18. 將元素添加到陣列調用
- 19. 將元素添加到陣列
- 20. 將元素添加到numpy的陣列
- 21. 將元組添加到列表中
- 22. NPM cheerio - ID添加到列表元素
- 23. 迭代添加元素到列表
- 24. 添加元素列表
- 25. 將元素添加到有序列表中
- 26. 如何將分離的li元素添加到ul列表中
- 27. 將元素添加到列表中的特定位置
- 28. 將所有元素添加到java中的另一個列表?
- 29. 將元素添加到VBA中的變體列表/數組
- 30. 我無法將元素添加到列表中? UnsupportedOperationException異常
如何判斷列表是否以「正確的順序排列」而沒有Ord' – kennytm 2011-03-13 21:47:44
在你設定這個之前,也許你應該更清楚你想要什麼?我認爲'louie 1 [2,3]'和'louie 2 [1,3]'都應該是'[1,2,3]''。但是,例如,「louie 1 [3,2]」或「louie 2 [3,1]」或「louie 6 [5,3,17,2]」應該是什麼? – applicative 2011-03-13 21:55:34