【Java学习日记】编程题整理-8.01 二分查找法

冒泡排序

1.数列必须是顺序排列好的

2.在判断首末位元素的时候要考虑到是否相等的情况(数组如果只有一个元素)

import java.util.Arrays;

import java.util.Scanner;

    public class MyTest {
      public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[] list = {56,64,84,13,4,68,12};                //当然这个地方可以写成由用户从控制台输入,但图方便就采用这种直接给出的方式了
        System.out.println("Enter the number you want to find ");
        int n= input.nextInt();
        Arrays.sort(list);                                         //把数组的元素从小到大排列好
        System.out.println(Arrays.toString(list));  //显示排列好之后的数列
        System.out.println("The flag is " + binarySearch(list,n));  
      }

      public static int binarySearch(int list[],int i) {
        int low=0,high = list.length-1;
        while(high >= low) {        //在调试的时候花时间最多的是找这个等号,如果不判断相等的情况,查找首位和末位的元素会出现不正确
          int mid = (high+low)/2;
          if(i<list[mid]) {
            high = mid -1;
          }
          else if(i == list[mid]){
            return mid;
          }
          else
         low = mid + 1;
        }
        return -1 -low;          //个人觉得返回-1也是可以的
      }

}


啊啊啊啊,因为近几日为情所困今日犹然,所以学习的进度被落下了很多。明天一定要复现插入排序和选择排序。数组就到这里先告一段落。希望明天能复习到对象和类,时间太久都已经快忘光了。就像从头开始学一样。啊啊啊。

 

posted @ 2020-08-02 00:23  JodyJoy  阅读(125)  评论(0编辑  收藏  举报