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:搜索特定员工并在硬编码文本字段中返回他们的姓名、薪水和部门