【发布时间】:2014-03-21 13:41:18
【问题描述】:
我有一个奇怪的问题。所以我有一系列字典说,
(
Dict 1:
"Name" = "B"
"Number" = "2"
Dict 2:
"Name" = "A"
"Number" = "1"
Dict 3:
"Name" = "D"
"Number" = "4"
Dict 4:
"Name" = "C"
"Number" = "3"
Dict 5
"Name" = "E"
"Number" = "5"
)
假设我有一个数组:
(
"1"
"4"
"2"
)
如何获得一个数组,其中包含其“数字”键与该数组中的每个对象匹配的所有字典,并根据第二个数组对其进行排序?
例如输出将是
(
Dict 1:
"Name" = "A"
"Number" = "1"
Dict 2:
"Name" = "D"
"Number" = "4"
Dict 3:
"Name" = "B"
"Number" = "2"
)
我想我可以使用sortedArrayUsingDescriptors,但我不确定如何指定多个描述符。描述符可以包含数组中的每个对象吗?
非常感谢任何帮助或指导。
【问题讨论】:
-
如何执行这 2 个步骤: 1. 使用 key = number 对原始字典进行排序 2. 对于数组 {1,4,2..} 中的每个数字,在排序后的字典中执行 bsearch,如果找到,则打印该条目的详细信息复杂度 = O(mlogm + nlogm) m = 字典大小,n = 查询数组大小
-
哦,但这里有些不清楚,你的字典会有两个相同编号的条目吗?例如: Dict 1 { Name = A, number = 1} Dict 2 {Name = B, number = 1} 如果是,那么当您的查询数组中有 1 时,我应该将两者都打印出来吗?
-
@shole bsearch 是什么意思?你的意思是排序数组而不是字典?
-
@shole 不,数字键中不会有重复项。
-
我的意思是二分搜索,你能重新排列你的字典,让它随数字升序吗?例如,我可以制作成对数组 [(1,2), (2,1), (3,4), (4,3),(5,5)],其形式为 (DictID, Number) ,然后将其重新排序为 [(2,1),(1,2),(4,3),(3,4),(5,5)]。最后对每个查询进行二分搜索,比如查询 {1,4,2},我可以分别找到 (2,1), (3,4), (1,2),所以你知道你应该打印 Dict2 , Dict3,Dict1 作为输出..
标签: ios objective-c sorting nsdictionary keyvaluepair