0。Abstract狗选本文主要先介绍搜索的概念,然后介绍最简单的搜索算法——顺序搜索,最后介绍二分查找。1、什么是搜索?我们平时做很多事情,都会涉及到很多的增删改查操作。例如,用户管理系统涉及用户注册(增加)、用户注销(删除)、用户信息修改(修改)、用户查找(查询)等。其中,“删除”和“修改”依赖于“检查”操作。下面重点介绍finding的重要操作。现在给你一个花名册,让你找一个学生。我们的方法是:根据学生的姓名或学号,在花名册中一一比较,直到找到学号或学名符合要求的学生,否则可以说花名册中没有该学生。花名册是一个集合,也称为查找表,它具有大量相同类型的元素,也称为记录——学生。可以有同名学生,但不能有重复学号,即一个学号只对应一个学生,一个名字可以对应多个学生。如果我们根据学号查找,只要花名册中有一个,我们就可以找到唯一符合要求的学生。如果我们按姓名搜索,那么我们可能会找到多个符合条件的学生。学号、姓名等可以识别一个学生的值称为关键字。唯一标识一个元素的值,如学号,是主关键字,可以标识多个元素的值,如姓名,是次关键字。当集合中的元素只有一个数据项时,它的键就是数据元素的值。比如数组[1,2,3,4,5,6,7,8,9]只有一个数据项,关键字是元素值本身;而roster中的元素——student,有三个数据项Item——学号、姓名、专业,其中学号和姓名为关键字。如果你学过数据库,上面的概念很容易理解。所谓查找,通俗地说,就是根据一定的查找依据,在一大群元素(集合/查找表)中找到符合要求的特定元素(记录)。如果找到,则查找成功,返回该元素的信息;如果查找完所有元素都没有找到,则说明这组元素中没有符合要求的元素,即查找失败,返回一个可以明确标示失败的值,如“empty”记录”或“空指针”。所谓搜索依据,就是给定一个目标值,比较目标值是否等于关键字。这要求目标值和关键字是同一类型。2.顺序搜索(SequentialSearch)顺序搜索是我们最容易想到的搜索方式。在上面的名册示例中,顺序搜索用于查找学生。顺序搜索思路:从集合中的第一个元素到最后一个元素,逐个比较其关键字和目标值。如果关键字等于目标值,则搜索成功,返回搜索到的元素信息;如果没有关键字等于目标值,则搜索失败,返回失败标识值。例如给定一个数组[11,8,4,6,9,1,16,22,14,10],给定目标值key,如果找到,则返回其数组下标;否则,返回-1:只从下标0开始遍历整个数组进行比较:/***@description:从头到尾遍历整个数组,找到目标值key,返回其下标index*@param{int}*array说明问题很简单,这里的数组元素不重复*@param{int}length数组长度*@param{int}key目标值*@return{int}如果找到,则返回目标值的下标;否则返回-1*/intsequential_search(int*array,intlength,intkey){for(intindex=0;index
