优化数组中的搜索,通过比较Objective C中的两个字符串进行搜索

塔达索鲁

我有一个从通讯簿中检索到的联系人列表,该列表存储在MutableArray contactList中。每个联系人都是一个具有“ contactName,contactImage ....等”属性的对象。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),^{
    //getAllContacts is a method which returns a Mutable array of Objects
    self.contactList = [NSMutableArray arrayWithArray:[instance getAllContacts]];

    //groupLetterToLoad could be "DEF"
    for(int j=0; j<self.groupLetterToLoad.length;j++) { 
        //1st iteration D, 2nd iteration E and 3rd iteration F
        NSString *testChar = [NSString stringWithFormat:@"%c",[self.groupLetterToLoad characterAtIndex:j]];
        //check D,E,F with contact name property's first letter of the contact list array
        for(int i=0;i<self.contactList.count;i++) {
            NSString *firstChar =[[[self.contactList objectAtIndex:i] contactName] substringToIndex:1];
            if([testChar isEqualToString: firstChar]) {
                pos=i; //retrieve the index of the matched position
                break;
            }
        }
        if(pos!=-1) break;
    }
});

现在它有两个for循环(时间O(n ^ 2))。这里的缺点是,如果groupLetterToLoad为“ WXYZ”,则比较将从A的W到Z的W进行比较。如何优化它?

贾斯汀

contactName如果可以避免每次搜索都[instance getAllContacts]进行排序(提示:保持排序),则对数组进行排序并执行半间隔搜索将大大降低您的复杂性

http://rosettacode.org/wiki/Binary_search#Objective-C-这是一个起点。您可以用compare:第一个字符比较替换

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

优化两个字符串中的关键字搜索

来自分类Dev

在R中两列中搜索两个字符串的高效版本

来自分类Dev

如何在Robot Framework中搜索空字符串/比较两个字符串

来自分类Dev

比较C中的两个字符串(字符串指针)

来自分类Dev

在多个文本文件中搜索两个字符串?

来自分类Dev

如何在文本文件中搜索两个字符串并对使用批处理脚本找到的两个字符串中的任何一个进行操作

来自分类Dev

在C中逐字符比较两个字符串

来自分类Dev

比较两个字符字符串以获取C中的密码

来自分类Dev

C ++中两个字符串的比较

来自分类Dev

C:比较函数中的两个字符串时出现问题

来自分类Dev

搜索两个字符串中最长的子字符串

来自分类Dev

如何从C#中的方法返回两个字符串数组

来自分类Dev

在C ++中连接两个字符串数组而不使用STL或向量

来自分类Dev

如果是-C,则从字符串中删除最后两个字符

来自分类Dev

在C#中的函数中返回两个字符串

来自分类Dev

在C#中的函数中返回两个字符串

来自分类Dev

如何从 C 中的文件中逐行读取每行的两个字符串

来自分类Dev

比较两个字符串数组

来自分类Dev

如何在一个字符串中搜索两个字符串?

来自分类Dev

如何在一个字符串中搜索两个字符串?

来自分类Dev

在C中两个字符串之间添加空格

来自分类Dev

如何在C中两个字符串之间查找文本

来自分类Dev

在c中的两个字符串中找到相同的单词

来自分类Dev

在c中的两个字符串中找到相同的单词

来自分类Dev

在C ++中返回两个字符串

来自分类Dev

比较C中的两个字符数组

来自分类Dev

文件中两个字符串之间不区分大小写的搜索

来自分类Dev

使用string.equals比较Java中的两个字符串数组

来自分类Dev

比较Bash中的两个字符串数组并获得差异

Related 相关文章

  1. 1

    优化两个字符串中的关键字搜索

  2. 2

    在R中两列中搜索两个字符串的高效版本

  3. 3

    如何在Robot Framework中搜索空字符串/比较两个字符串

  4. 4

    比较C中的两个字符串(字符串指针)

  5. 5

    在多个文本文件中搜索两个字符串?

  6. 6

    如何在文本文件中搜索两个字符串并对使用批处理脚本找到的两个字符串中的任何一个进行操作

  7. 7

    在C中逐字符比较两个字符串

  8. 8

    比较两个字符字符串以获取C中的密码

  9. 9

    C ++中两个字符串的比较

  10. 10

    C:比较函数中的两个字符串时出现问题

  11. 11

    搜索两个字符串中最长的子字符串

  12. 12

    如何从C#中的方法返回两个字符串数组

  13. 13

    在C ++中连接两个字符串数组而不使用STL或向量

  14. 14

    如果是-C,则从字符串中删除最后两个字符

  15. 15

    在C#中的函数中返回两个字符串

  16. 16

    在C#中的函数中返回两个字符串

  17. 17

    如何从 C 中的文件中逐行读取每行的两个字符串

  18. 18

    比较两个字符串数组

  19. 19

    如何在一个字符串中搜索两个字符串?

  20. 20

    如何在一个字符串中搜索两个字符串?

  21. 21

    在C中两个字符串之间添加空格

  22. 22

    如何在C中两个字符串之间查找文本

  23. 23

    在c中的两个字符串中找到相同的单词

  24. 24

    在c中的两个字符串中找到相同的单词

  25. 25

    在C ++中返回两个字符串

  26. 26

    比较C中的两个字符数组

  27. 27

    文件中两个字符串之间不区分大小写的搜索

  28. 28

    使用string.equals比较Java中的两个字符串数组

  29. 29

    比较Bash中的两个字符串数组并获得差异

热门标签

归档