学习练习 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 ...
随机推荐
- vmware 没挂载光盘解决方案
一定要选中上方的'已连接'
- FTP搭建
在桌面上右击“我的电脑”,执行“管理”命令,在“计算机管理”窗口的左窗格中依次展开“系统工具 ”→“本地用户和组”目录,单击选中“用户”选项.在右侧窗格中单击右键,执行“新用户”命令.在 打开的“新用 ...
- 【转】SQL SERVER 存储过程中变量的作用域
今天遇到一个很有趣的事情,以前没有注意过,所以记下来. 先来看例子. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE ...
- (C/C++) Interview in English - Points.
Q: What is a dangling pointer? A: A dangling pointer arises when you use the address of an object af ...
- 禁止使用finalize方法
Don´t use Finalizers, mainly because are unpredictable and we don´t know when will be executed, &quo ...
- unsigned char 转字符串:
通常送显示的都是字符串,对于int long float转字符串有对应的函数,还有sprintf进行格式输出,对于嵌入式和单片机大多都用unsigned char型变量,转字符串需要自己编写函数,需要 ...
- nfs不能自动mount(转载)
From:http://www.wenzizone.com/2009/08/14/nfs_can_not_automount_supplementary.html 手动挂载nfs没有问题,说明port ...
- Linux查看程序端口占用情况(转载)
From:http://www.cnblogs.com/benio/archive/2010/09/15/1826728.html 今天发现服务器上Tomcat 8080端口起不来,老提示端口已经被占 ...
- dual
1. dual 确实是一张表.是一张只有一个字段,一行记录的表. 2.习惯上,我们称之为'伪表'.因为他不存储主题数据.3. 他的存在,是为了操作上的方便.因为select 都是要有特定对象的.如:s ...
- Linux自启动
linux 下tomcat开机自启动修改Tomcat/bin/startup.sh 为:export JAVA_HOME=/usr/java/j2sdk1.4.2_08export CLASSPATH ...