A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xman20 中级黑马   /  2015-3-20 15:49  /  835 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



今天学习了函数与数组,以及一些经常使用的算法,虽然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循环。

1 个回复

倒序浏览
回复一下自己的贴子
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马