c ++员工姓名搜索[关闭]

Posted

技术标签:

【中文标题】c ++员工姓名搜索[关闭]【英文标题】:c++ employee name search [closed] 【发布时间】:2018-09-01 08:16:28 【问题描述】:
        string name[size] = "Collins, Bill", "Smith, Bart", "Michalski, Joe", "Griffin, Jim",
                "Sanchez, Manny", "Rubin, Sarah", "Taylor, Tyrone", "Johnson, Jill",
                "Allison, Jeff", "Moreno, Juan", "Wolfe, Bill", "Whitman, Jean",
                "Moretti, Bella", "Wu, Hong", "Patel, Renee", "Harrison, Rose",
                "Smith, Cathy", "Conroy, Pat", "Kelly, Sean", "Holland, Beth";



    int binarySearchIterative(string name[], int size, string empName) 
        int low = 0;
        int high = size - 1;

        while (low <= high) 
            int mid = (low + high) / 2;
            if (empName == name[mid]) 
                return mid;
             else if (empName < name[mid]) 
                high = mid - 1;
             else 
                low = mid + 1;
            
        
        return -1;
    

因此,当我输入要搜索的名称时,我必须完全按照数组中列出的方式输入它。例如,如果我想找到比尔柯林斯。我必须输入柯林斯,比尔。如果我输入 Bill Collins,它会告诉我找不到该员工。我需要能够在不使用逗号的情况下搜索名字 First Last。如果您需要查看我的更多代码,请告诉我。

【问题讨论】:

你自己尝试过什么吗? 您需要将这些名称分开,因为实际上没有人会以这种方式输入它们。 你的问题是什么? 【参考方案1】:

二分搜索需要排序输入,您可以通过铅笔测试轻松检查:

假设你有一系列像1,5,8,10,12这样的数字,你正在寻找5;首先猜测,您拆分系列并测试中间的数字,即8。由于5 低于8,显然您不必在8 上方的一半中寻找5。然而,这个假设只有在序列被排序的情况下才成立。否则5 也可能在上半部分。

所以对你的输入进行排序,然后看看它是否有效。否则使用调试器:-)

【讨论】:

【参考方案2】:

您需要实现一个比较函数(或代码),从字符串中提取名字和姓氏(作为单独的变量)。

提取后,您可以轻松地按名字或姓氏进行比较。

理想情况下,您应该有一个对数据进行建模的结构,例如一个名字字段和一个姓氏字段。

【讨论】:

以上是关于c ++员工姓名搜索[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Oracle APEX Application Builder:搜索特定员工并在硬编码文本字段中返回他们的姓名、薪水和部门

如何使用正则表达式在句子内搜索 - 不区分大小写

人们说“搜索哈希表”是啥意思? [复制]

如何在文本文件中搜索单词,如果找到则打印出整行

如何创建可以选择搜索列的存储过程?

Vuetify - 如何使用数据表搜索功能按动态计算的字段值进行过滤?