1 package com.hanqi;
 2
 3 import java.util.*;
 4
 5 public class Test5 {
 6
 7     public static void main(String[] args) {
 8         // TODO 自动生成的方法存根
 9         //数组的二分查找法
10         //前提:数组要排好序
11
12         //1.随机生成生成数组
13         Random r1 = new Random();
14         int[] array = new int[10];
15         for (int i = 0; i < array.length; i++) {
16             // 产生随机数
17             array[i] = r1.nextInt(100);
18         }
19         // 遍历输出数组
20         System.out.println("数组的原始顺序");
21         for (int t : array) {
22             System.out.print(t + " ");
23         }
24
25         //2.冒泡排序
26         System.out.println("排序后的顺序");
27         //总的循环次数
28         for (int k = 0; k < array.length - 1; k++) {
29             //优化:每次冒泡时的循环次数,比上一次少1
30             for (int i = 0; i < array.length - 1-k; i++) {
31                 if (array[i] > array[i + 1]) {
32                     // 从小到大
33                     int zhong = array[i];
34                     array[i] = array[i + 1];
35                     array[i + 1] = zhong;
36
37                 }
38             }
39             System.out.println("数组第" + (k + 1) + "次排序后的顺序");
40             for (int t : array) {
41                 System.out.print(t + " ");
42             }
43         }
44         //3.二分查找
45
46         //1)计算出数组的中间位置:(开始位置索引+结束位置索引)/2
47
48         //2)取出中间未知的值和要查找的数字比较,根据比较结果决定下一步查找的部分
49         //3)计算出下一部分数组的中间位置
50
51         //要查找的值
52
53
54         int a=53;
55         //找到的值得位置
56
57         int w=-1;//-1代表没找到
58         //开始索引
59         int  start=0;
60         //结束索引
61         int  end=array.length-1;
62         //循环条件
63         while(start<=end)
64         {
65         int m=(start+end)/2;
66         if(a==array[m])
67         {
68             w=m;//找到了
69             break;
70         }
71         else if(a>array[m])
72         {
73             start=m+1;
74         }
75         else
76         {
77             end=m-1;
78         }
79         }
80         System.out.println("找到的位置是"+w);
81     }
82
83 }

转载于:https://www.cnblogs.com/zhoudi/p/5489440.html

学习练习 java 二分查找法相关推荐

  1. java二分查找法_java算法之二分查找法的实例详解

    java算法之二分查找法的实例详解 原理 假定查找范围为一个有序数组(如升序排列),要从中查找某一元素,如果该元素在此数组中,则返回其索引,否则返回-1.通过数组长度可取出中间位置元素的索引,将其值与 ...

  2. 【算法学习笔记】二分查找法

    二分查找法 二分查找的本质就是分治法,小时候有过这么一种猜数字的游戏,你在心中想一个大于0小于100的数字,然后我来提问,你只用回答是或者不是,比如"你想的数字比50大吗" 你说不 ...

  3. java二分查找法视频_078-二分查找算法思路图解

    2.网上数据结构和算法的课程不少,但存在两个问题: 1)授课方式单一,大多是照着代码念一遍,数据结构和算法本身就比较难理解,对基础好的学员来说,还好一点,对基础不好的学生来说,基本上就是听天书了 2) ...

  4. java二分查找递归_java学习之—递归实现二分查找法

    /** * 递归实现二分查找法 * Create by Administrator * 2018/6/21 0021 * 上午 11:25 **/ class OrdArray{ private lo ...

  5. java 二分查找_计算机入门必备算法——二分查找法

    1.引言 笔者对于计算机的研究一直停滞不前,近期想对一些算法进行复习和进一步的研究,每天都会更新一个新的算法,算法有难有易,层层递进.不希望能学的有多么高深,只希望在一些最基本的算法上有编码的思路,或 ...

  6. java算法2_二分查找法

    比如现在有个记录名单的字典,里面的名字是按A-Z的顺序排好的,现在我想找Lily这个人.我可以从第一页开始一页一页的翻,但显然这样效率太低了.我可以怎么做呢?首先我直接翻到字典的中间位置,假如发现这里 ...

  7. binarysearch java,java数据结构之二分查找法 binarySearch的实例

    java数据结构之二分查找法 binarySearch的实例 折半查找法,前提是已经排好序的数组才可查找 实例代码: public class BinarySearch { int[] bArr; p ...

  8. java小练习题---冒泡排序+二分查找法

    题目: 冒泡排序+二分查找法 代码: package scan; import java.util.Scanner; //import java.util.Scanner; public class ...

  9. (java)leetcode852 山脉数组的封顶索引(二分查找法找出数组中最大值的下标)(Peak Index in a Mountain Array)

    题目描述: 我们把符合下列属性的数组 A 称作山脉: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... ...

最新文章

  1. github关联域名,创建个人网站教程终结篇
  2. ubuntu14 + nginx + php
  3. 【CF1311E】Construct the Binary Tree【增量构造】【复杂度证明】
  4. 博文视点大讲堂36期——让Oracle跑得更快 成功举办
  5. android 判断 string 是否是字母数字,Android中判断字符串中必须包含字母或者数字...
  6. Scala-Unit6-final/type关键字、样例类样例对象
  7. rocketmq 4.X 扩容思路
  8. 用Java控制小电灯-树莓派PI4J
  9. 5G 时代,将边缘计算进行到底!
  10. Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析...
  11. 计算机网络普遍采用什么传输方式,网络传输技术
  12. 格雷码和二进制相互转换
  13. php 时间转换时间戳_php时间戳转换日期方法总结
  14. 怎么用虚拟机搭建云服务器,利用虚拟机搭建云服务器
  15. 云计算未来的发展趋势
  16. Google 的浏览器安全手册
  17. 将来的你,将会感谢现在努力拼搏奋斗的自己------学习计划。
  18. 20210212【学习笔记】Python初步
  19. IPv4/IPv6地址范围与网络地址/子网掩码的转换,点分十进制与数字掩码的转换
  20. C++实现简单Kmeans聚类算法

热门文章

  1. jdk11默认使用的垃圾回收器是G1
  2. Python Django 打印执行过的查询语句
  3. jvm最大内存限制多少?
  4. Java获取当前运行的CPU是几核的
  5. 在config.php文件中,写好了config文件怎么在PHP文件里按条件查询
  6. android 進度條_Android更新下載進度條 | 學步園
  7. MATLAB浮点数与十六进制(浮点数)转换
  8. python循环实验心得_2019.06.18学习python循环总结
  9. 2.2.1操作系统之处理机调度的概念及层次
  10. linux 使用jstack_案例解析:线程池使用不当导致的系统崩溃