(视频教程所学)记录所学,非解疑。。。。
(写在前面)
在做这个练习中,碰到了一个classpath的问题,由此得出一个结论:
在做测试的时候,如果结果不是你预想的值时,就要看看你的classpath值,确认自己是否测试其他的class文件。
因为当运行java的class文件时,虚拟机会先找在classpath中设置的文件夹,当在classpath配置的文件夹中找不到该文件时,才会在其他的文件中查找。
折半查询算法
/*功能: 折半查找的实现*//***@ author Soul_Fighter*@ 功 能 折半查找*/public class ArrayDemo{ public static void main(String[] args) { int[] arr = new int[]{2,5,8,10,16,22,24,27,30}; int index = halfSearch(arr,24); System.out.println(index); } /** *@ author Soul_Fighter *@ 功 能 折半查找 *@ param array *@ param key *@ return int */ /* 思路:折半查找 1、定义三个角标变量,最大角标max,最小角标min,中间角标mid。 2、定义一个循环,因为不确定第一次就能得出结果。这里用while循环比较好,因为只需判断一个条件arr[mid]是否等于key的值。即:arr[mid] != key。 3、然后判断arr[mid]的值和key的值之间的关系。如果arr[mid]>key,则max = mid - 1;如果arr[mid] < key,则min = mid +1。中间值重新去值mid = (max+min)/2。 4、因为min不能大于max的值,所以还要加一个判断。如果minkey) max = mid - 1; else if(arr[mid] < key) min = mid +1; if(min > max) return -1; mid = (max+min)/2; } return mid; }}