学习练习 java 二分查找法
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 二分查找法相关推荐
- java二分查找法_java算法之二分查找法的实例详解
java算法之二分查找法的实例详解 原理 假定查找范围为一个有序数组(如升序排列),要从中查找某一元素,如果该元素在此数组中,则返回其索引,否则返回-1.通过数组长度可取出中间位置元素的索引,将其值与 ...
- 【算法学习笔记】二分查找法
二分查找法 二分查找的本质就是分治法,小时候有过这么一种猜数字的游戏,你在心中想一个大于0小于100的数字,然后我来提问,你只用回答是或者不是,比如"你想的数字比50大吗" 你说不 ...
- java二分查找法视频_078-二分查找算法思路图解
2.网上数据结构和算法的课程不少,但存在两个问题: 1)授课方式单一,大多是照着代码念一遍,数据结构和算法本身就比较难理解,对基础好的学员来说,还好一点,对基础不好的学生来说,基本上就是听天书了 2) ...
- java二分查找递归_java学习之—递归实现二分查找法
/** * 递归实现二分查找法 * Create by Administrator * 2018/6/21 0021 * 上午 11:25 **/ class OrdArray{ private lo ...
- java 二分查找_计算机入门必备算法——二分查找法
1.引言 笔者对于计算机的研究一直停滞不前,近期想对一些算法进行复习和进一步的研究,每天都会更新一个新的算法,算法有难有易,层层递进.不希望能学的有多么高深,只希望在一些最基本的算法上有编码的思路,或 ...
- java算法2_二分查找法
比如现在有个记录名单的字典,里面的名字是按A-Z的顺序排好的,现在我想找Lily这个人.我可以从第一页开始一页一页的翻,但显然这样效率太低了.我可以怎么做呢?首先我直接翻到字典的中间位置,假如发现这里 ...
- binarysearch java,java数据结构之二分查找法 binarySearch的实例
java数据结构之二分查找法 binarySearch的实例 折半查找法,前提是已经排好序的数组才可查找 实例代码: public class BinarySearch { int[] bArr; p ...
- java小练习题---冒泡排序+二分查找法
题目: 冒泡排序+二分查找法 代码: package scan; import java.util.Scanner; //import java.util.Scanner; public class ...
- (java)leetcode852 山脉数组的封顶索引(二分查找法找出数组中最大值的下标)(Peak Index in a Mountain Array)
题目描述: 我们把符合下列属性的数组 A 称作山脉: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... ...
最新文章
- github关联域名,创建个人网站教程终结篇
- ubuntu14 + nginx + php
- 【CF1311E】Construct the Binary Tree【增量构造】【复杂度证明】
- 博文视点大讲堂36期——让Oracle跑得更快 成功举办
- android 判断 string 是否是字母数字,Android中判断字符串中必须包含字母或者数字...
- Scala-Unit6-final/type关键字、样例类样例对象
- rocketmq 4.X 扩容思路
- 用Java控制小电灯-树莓派PI4J
- 5G 时代,将边缘计算进行到底!
- Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析...
- 计算机网络普遍采用什么传输方式,网络传输技术
- 格雷码和二进制相互转换
- php 时间转换时间戳_php时间戳转换日期方法总结
- 怎么用虚拟机搭建云服务器,利用虚拟机搭建云服务器
- 云计算未来的发展趋势
- Google 的浏览器安全手册
- 将来的你,将会感谢现在努力拼搏奋斗的自己------学习计划。
- 20210212【学习笔记】Python初步
- IPv4/IPv6地址范围与网络地址/子网掩码的转换,点分十进制与数字掩码的转换
- C++实现简单Kmeans聚类算法
热门文章
- jdk11默认使用的垃圾回收器是G1
- Python Django 打印执行过的查询语句
- jvm最大内存限制多少?
- Java获取当前运行的CPU是几核的
- 在config.php文件中,写好了config文件怎么在PHP文件里按条件查询
- android 進度條_Android更新下載進度條 | 學步園
- MATLAB浮点数与十六进制(浮点数)转换
- python循环实验心得_2019.06.18学习python循环总结
- 2.2.1操作系统之处理机调度的概念及层次
- linux 使用jstack_案例解析:线程池使用不当导致的系统崩溃