Bash脚本二进制搜索
发布时间:2020-12-15 19:00:40 所属栏目:安全 来源:网络整理
导读:编写一个bash脚本来进行二进制搜索.将学生姓名和成绩从文件读入数组.提示用户输入学生姓名.在数组中找到名称并显示成绩.文件中的数据如下: Ann:ABob:CCindy:BDean:FEmily:AFrank:CGinger:DHal:BIvy:AJustin:FKaren:D 我已经完成了以下操作,但我仍然坚持下一
编写一个bash脚本来进行二进制搜索.将学生姓名和成绩从文件读入数组.提示用户输入学生姓名.在数组中找到名称并显示成绩.文件中的数据如下:
Ann:A Bob:C Cindy:B Dean:F Emily:A Frank:C Ginger:D Hal:B Ivy:A Justin:F Karen:D 我已经完成了以下操作,但我仍然坚持下一步该做什么 #!/bin/bash echo "please enter students Name: " read student echo "$student + $Grade" ((i=0)) while read students[$i] ; do ((i++)) done < students.dat first=0 last=$(students[@]) ((mid=0)) Name=`echo ${students[$mid]} | cut -d: -f1` Grade=`echo ${students[$mid]} | cut -d: -f2` echo $Name echo $Grade
二分搜索需要搜索的最大和最小边界.从零开始是很好的,但你的最后一个变量有点偏.尝试:last = $(($#students [@]} – 1)) – 1将使您的数组处于正确的大小(数组从零开始,并减少到它们的大小.)
之后尝试以下伪代码: while (last is <= first) middle = midway point between first and last // make sure that your comparing just the names "Ann",// not your whole string "Ann:A" if (students[middle] == student) exit loop else if (students[middle] < student) first = middle + 1 else if (students[middle] > student) last = middle - 1 我在bash脚本方面不是很出色,所以我不会尝试修复(如果它甚至需要修复)你的大部分语法.如果你弄清楚语法,那么伪代码应该可以帮到你. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何使用vimscript在文件名,行和列号上写入状态行的文本?
- AngularJS:将数据传递到角状ui路由器中的$state.go状态
- angular
- 何时使用Docker HEALTHCHECK vs livenessProbe/readinessPr
- Axis2创建webservice服务的方式之POJO方式
- webService学习之路(三):springMVC集成CXF后调用已知的w
- 在Angular 2/4/6应用程序中管理状态的最佳实践
- angularjs – 在加载资源之前等待承诺解析
- bash – 在shell脚本中通过s_client关闭连接
- AngularJS |使用$http.get方法设置路径Parmeter
推荐文章
站长推荐
热点阅读