学习练习 java 二分查找法
package com.hanqi;
import java.util.*;
public class Test5 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
//数组的二分查找法
//前提:数组要排好序
//1.随机生成生成数组
Random r1 = new Random();
int[] array = new int[10];
for (int i = 0; i < array.length; i++) {
// 产生随机数
array[i] = r1.nextInt(100);
}
// 遍历输出数组
System.out.println("数组的原始顺序");
for (int t : array) {
System.out.print(t + " ");
}
//2.冒泡排序
System.out.println("排序后的顺序");
//总的循环次数
for (int k = 0; k < array.length - 1; k++) {
//优化:每次冒泡时的循环次数,比上一次少1
for (int i = 0; i < array.length - 1-k; i++) {
if (array[i] > array[i + 1]) {
// 从小到大
int zhong = array[i];
array[i] = array[i + 1];
array[i + 1] = zhong;
}
}
System.out.println("数组第" + (k + 1) + "次排序后的顺序");
for (int t : array) {
System.out.print(t + " ");
}
}
//3.二分查找
//1)计算出数组的中间位置:(开始位置索引+结束位置索引)/2
//2)取出中间未知的值和要查找的数字比较,根据比较结果决定下一步查找的部分
//3)计算出下一部分数组的中间位置
//要查找的值
int a=53;
//找到的值得位置
int w=-1;//-1代表没找到
//开始索引
int start=0;
//结束索引
int end=array.length-1;
//循环条件
while(start<=end)
{
int m=(start+end)/2;
if(a==array[m])
{
w=m;//找到了
break;
}
else if(a>array[m])
{
start=m+1;
}
else
{
end=m-1;
}
}
System.out.println("找到的位置是"+w);
}
}

学习练习 java 二分查找法的更多相关文章
- java二分查找法
//二分查找法.必须有前提:数组中的元素要有序. public static int halfSeach_2(int[] arr,int key){ int min,max,mid; min = ; ...
- java学习之—递归实现二分查找法
/** * 递归实现二分查找法 * Create by Administrator * 2018/6/21 0021 * 上午 11:25 **/ class OrdArray{ private lo ...
- java for循环和数组--冒泡排序、二分查找法
//100以内与7相关的数 for(int a=1;a<=100;a++){ if(a%7==0||a%10==7||a/10==7){ System.out.print(a+ ...
- 二分查找法 java
前几天去面试,让我写二分查找法,真是哔了狗! 提了离职申请,没事写写吧! 首先二分查找是在一堆有序的序列中找到指定的结果. public class Erfen { public static int ...
- Java冒泡排序,二分查找法
冒泡排序 int[] arr = {1,7,6,2,8,4}; int temp ; //只需 运行 5次 for (int i = 0; i < arr.length - 1; i++) { ...
- 二分查找法(java版)
二分查找法也称为折半查找法,在有序的序列中使用二分法可以提高程序的执行效率. 典型的二分查找法代码 public int binarySearch1(int[] arr,int target){ in ...
- 【C/C++学院】0723-32位与64位/调戏窗体程序/数据分离算法/内存检索/二分查找法/myVC
[送给在路上的程序猿] 对于一个开发人员而言,能够胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够运用到系统中,由此简化系统的开发,是其架构生涯的第一步. ...
- Java-数据结构与算法-二分查找法
1.二分查找法思路:不断缩小范围,直到low <= high 2.代码: package Test; import java.util.Arrays; public class BinarySe ...
- 选择、冒泡排序,二分查找法以及一些for循环的灵活运用
import java.util.Arrays;//冒泡排序 public class Test { public static void main(String[] args) { int[] ar ...
随机推荐
- mongoVUE对mongodb常用的基础操作
一. 连接mongodb服务端: 1. 双击mongoVUE,进入如下图所示界面: 2. 点击上图中的“+”,出现如下图,输入要连接的mongodb服务器的ip. ...
- (WPF) MVVM: 动态添加控件及绑定。
比如需要显示一个键盘,里面有各个按键.实现的效果如下: 之前的思路,就是建立一个singleKey的控件,然后在后台用代码动态的添加到父控件里去, 再用代码在后台进行绑定. 这种实现方法并不是真正的M ...
- C#托管代码与C++非托管代码互相调用
http://www.cnblogs.com/Jianchidaodi/archive/2009/03/11/1407270.html#1473515 http://www.cnblogs.com/J ...
- Report_客制化以PLSQL输出XLS标记实现Excel报表(案例)
2015-02-12 Created By BaoXinjian
- CF 337D Book of Evil 树形DP 好题
Paladin Manao caught the trail of the ancient Book of Evil in a swampy area. This area contains n se ...
- NeHe OpenGL教程 第三十一课:加载模型
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- mysql多表字段名重复的情况
CREATE TABLE `card` ( `id` ) unsigned NOT NULL AUTO_INCREMENT, `json_str` ) NOT NULL, `f` ,) unsigne ...
- JAVA取随机数,石头剪刀布实例
一.取随机数: import java.util.Random; //导入随机数 public class Test{ public static void main(String[] args){ ...
- nfs不能自动mount(转载)
From:http://www.wenzizone.com/2009/08/14/nfs_can_not_automount_supplementary.html 手动挂载nfs没有问题,说明port ...
- 处理日期时间NSDate
获取当前日期时间的代码如下: NSDate *dateToDay = [NSDate date]; NSDateFormatter *df = [[NSDateFormatter alloc] ini ...