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 二分查找法的更多相关文章

  1. java二分查找法

    //二分查找法.必须有前提:数组中的元素要有序. public static int halfSeach_2(int[] arr,int key){ int min,max,mid; min = ; ...

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

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

  3. 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+ ...

  4. 二分查找法 java

    前几天去面试,让我写二分查找法,真是哔了狗! 提了离职申请,没事写写吧! 首先二分查找是在一堆有序的序列中找到指定的结果. public class Erfen { public static int ...

  5. Java冒泡排序,二分查找法

    冒泡排序 int[] arr = {1,7,6,2,8,4}; int temp ; //只需 运行 5次 for (int i = 0; i < arr.length - 1; i++) { ...

  6. 二分查找法(java版)

    二分查找法也称为折半查找法,在有序的序列中使用二分法可以提高程序的执行效率. 典型的二分查找法代码 public int binarySearch1(int[] arr,int target){ in ...

  7. 【C/C++学院】0723-32位与64位/调戏窗体程序/数据分离算法/内存检索/二分查找法/myVC

    [送给在路上的程序猿] 对于一个开发人员而言,能够胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够运用到系统中,由此简化系统的开发,是其架构生涯的第一步. ...

  8. Java-数据结构与算法-二分查找法

    1.二分查找法思路:不断缩小范围,直到low <= high 2.代码: package Test; import java.util.Arrays; public class BinarySe ...

  9. 选择、冒泡排序,二分查找法以及一些for循环的灵活运用

    import java.util.Arrays;//冒泡排序 public class Test { public static void main(String[] args) { int[] ar ...

随机推荐

  1. html5 中meta中 content=width=device-width注意

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  2. 算法的上帝——Donald E.Knuth(转)

    开始介绍前先膜拜之~ 密尔沃基市,是美国威斯康辛州最大的城市.1938年1月10日,圣诞刚过不久,密尔沃基市民像往常一样平静地生活着.咖啡店里,有人在议论着罗斯 福总统的救市新政策,有人在议论着到底该 ...

  3. hdu 5438 Ponds dfs

    Time Limit: 1500/1000 MS (Java/Others)     Memory Limit: 131072/131072 K (Java/Others) Problem Descr ...

  4. c# 贪吃蛇源码

    using UnityEngine; using System.Collections;using System.Diagnostics;using UnityEngine.SceneManageme ...

  5. MySQL作业

    创建作业事件 MONTH STARTS '2015-01-01 05:30:01' ON COMPLETION NOT PRESERVE ENABLE DO CALL sp_moveLoginReco ...

  6. Android之BroadcastReceiver1

    1.触发发送广播 public class MainActivity extends Activity { private Button sendButton; @Override protected ...

  7. js封装 与 js高级用法 问题集合

    1. 什么是自执行的匿名函数? 它是指形如这样的函数: (function {// code})(); 2. 疑问 为什么(function {// code})();可以被执行, 而function ...

  8. 一些BOOTSTRAP的问题

    老师好,有几个点不是很明白,劳烦老师帮忙解惑 <1>不是特别清楚nav和navbar的区别,视频中用的是nav标签,而class则标明navbar,是不是这里的nav其实没有什么作用,而c ...

  9. poj 2253 Frogger dijkstra算法实现

    点击打开链接 Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 21653   Accepted: 7042 D ...

  10. oracle 11g 服务端下载地址及安装说明

        oracle 11g 服务端下载地址及安装说明         分类:             Oracle              2013-11-17 19:40     988人阅读  ...