标签:大小 操作 单词 首字母 分享 循环结构 语言 常见 for循环结构
一. 查找
想要知道某一个数据在数组中的位置。(从一个数组中查找某一个数据,数据存在的话,同时返回角标号,没有相应的数据,返回-1.)
介绍数组常见的操作,实际上就是功能化的函数(求最值,排序,查找)。一旦说到函数,就涉及到两个明确,返回值和输入。这里要得到的是位置,也就是索引号。我们要知道某一个数据在某一个数组中的位置,数据和数组都是不确定的,这是一个通用的解法。编写程序就是用通用的方法,来解决具体的问题,主函数中是确定的问题,功能化函数中是通用的解法。因此,输入中有两个形参。在写形参时,要标注类型和变量名。
时刻要用辩证的思维来看待问题,查找有两种结果,找到和找不到。找的到时,直接返回角标值,找不到时,返回-1。在数组对数据编号时,都是从0开始编的,返回了-1,就表示数组中没有该数据,也不存在相应的角标号。
这里还需要注意的一个问题是,是否对应数据的角标只有一个?原因就在于数组的不确定性,对样性。
这里return -1写在for语句的外面也挺奇怪的。我们来分析一下,(其实这里牵涉return能够返回多个值的问题),从定义方法后,进入for语句。for循环里面,如果if成立,就返回一个。for里面有这么三种情况,有多个返回值,有一个返回值,无返回值。无论for里面是什么情况,接着都会返回一个-1的值。但是数组里面有对应数据的时候,得到的返回值就是第一次出现数据的角标号,后面的返回值都不管,这里值得深思。无论怎样,最后都会返回一个-1的值,如果前面有对应数据,有返回角标值,那么这个-1就无所谓;如果前面没有返回值,那么这里的-1就是唯一的返回值,也就意味着数组中没有对应的数据。
二.
给定一个确定的数组{4,1,8,7,3,8,2},如果我们利用上面的源代码来查找数据8的位置,结果显示的是第一个8所在的角标2。
这里我产生一个疑问,为什么输出语句最后输出的值不是角标5,是比2后返回,最后的值应该是5才对。我怀疑我对for循环语句理解不对,for循环结构是否对每一个x都执行了?怎么退出的,是全部执行完了退出的,还是满足了某一个x的执行语句才退出的?→循环语句的结束,都是最终不符合循环条件才退出的,和执行语句并无关系。那么,对于这里的两个返回值(其实是三个返回值,-1是一直都要返回的),输出先返回的值,就值得深思了。
int index=getIndex(arr, 8)中方法名为getIndex,可见函数名和类名的起名规则不一样,类名第一个单词的首字母就开始大写了,而函数名要等到第二个单词才行。
三. 折半查找
从视频的讲解来看,数据的操作先介绍了查找,又介绍了折半查找。为什么会介绍两种查找,就在于数据的多少不一样,查找的程序是针对数据比较少的情况来的。折半查找是对于数据很多时,设定的源代码。
折半查找可以提高查找的效率。能够执行折半查找的数据有一个前提,必须是有序的。
举例说明
情况1:
key=45,确定数据45的角标。
开始时,我们要确定中间角标的大小,中间角标=(首角标+尾角标)/2,由于这是java计算机语言中的计算,所以中间角标的结果绝对不会是浮点型,都是int类型。这一连串数据是有大小顺序的,但是并没有规定,相差都为1,思维不能僵硬。
情况2:
key=50,
思考:折半查找中设计几个内容,首先需要三个变量,需要重复地去做中间角标是不是要找的元素,是大还是还是小,然后继续进行折半的动作,这些动作是在重复执行,这就用到了循环。
标签:大小 操作 单词 首字母 分享 循环结构 语言 常见 for循环结构
原文地址:http://www.cnblogs.com/wsw-bk/p/7616834.html