今天学习了函数与数组,以及一些经常使用的算法,虽然JAVA 的API已经封装了很多很实用的,但是最好自己实践一次才更好。
关于冒泡排序,最大选择以及二分法选择,其实有很多各种各样的实现方式。
我自己也试着不看教程的方法,自己写了一个2分法求值的方法:
public class Demo
{
public static void main(String[] args)
{
int[] arr = {1,3,5,7,9,10,15,18};
int m = 11;
//getMax(arr);
//bubble(arr);
half(arr,m);
}
public static void half(int[] arr,int m)
{
int x =0;
int y = (x+arr.length)/2;
while(m != arr[y])
{
if(m>arr[y])
{
x=y;
y=(x+arr.length)/2;
}
if(m
{
y = (x+y)/2;
}
if(x==y)
{
System.out.println("-1");
return;
}
}
System.out.println("index:" +y);
}
}
对于最后一个跳出循环以及如何在数组中如果有不相等的情况下,如何跳出循环想了很久,而且对break 和 return 有了更深的了解,开始使用break的时候,跳出循环会继续执行下一句,即使没有匹配,也会输出匹配前执行的最后一个INDEX,而return直接跳出函数。
因为和视频的方法不一样,对于如何在不匹配的情况下如何跳出循环着实思考了很久,最后思考,根据自己的算法,若无匹配数,最后循环,左端右端会相等,即可跳出while循环。
|
|