`
android2116
  • 浏览: 14017 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JAVA折半查找法

 
阅读更多
class ArrayFind 
{
	public static void main(String[] args) 
	{

		int[] arr = new int[]{1,6,9,11,18,54,60,66,90};
		System.out.print("find 18 from array:");
		printArr(arr);
		System.out.println("find result is(halfSearch):" + halfSearch_2(arr, 18));
		System.out.println("find result is(halfSearch_2):" + halfSearch_2(arr, 18));

	}//end of method main

	//打印一个数组
	public static void printArr(int[] arr)
	{
		for (int x = 0; x<arr.length; x++ )
		{
			if (x == arr.length - 1)
			{
				System.out.println(arr[x]);
				break;
			}
			System.out.print(arr[x] + ",");
		}
	}//end of method printArr

	//折半查找法
	public static int halfSearch(int[] arr, int key)
	{
		int max = arr.length - 1;
		int min = 0;
		int mid = (max + min)/2;
		while (arr[mid] != key)
		{
			if (key>arr[mid])
			{
				min = mid + 1;
			}
			else if (key<arr[mid])
			{
				max = mid - 1;
			}
			if (min>max)
			{
				return -1;
			}
			mid = (max + min)/2;
		}//end of while
		return mid;

	}//end of method halfSearch

	//折半查找的第二种方式
	public static int halfSearch_2(int[] arr, int key)
	{
		
		int max = arr.length - 1;
		int min = 0;
		int mid = (max + min)/2;
		while (min <= max)
		{
			if ( key > arr[mid] )
			{
				min = mid + 1;
			}
			else if ( key < arr[mid] )
			{
				max = mid - 1;
			}
			else if (key == arr[mid])
			{
				return mid;
			}
			mid = ( max + min ) / 2;
		}//end of while

		return -1;
	
	}//end of method halfSearch

}//end of class ArrayFind

 

分享到:
评论

相关推荐

    java 快速排序 折半查找的界面实现 (递归与分治法)

    java 快速排序 折半查找的界面实现 (递归与分治法)

    java 折半查找法(二分查找)实例

    java 折半查找法(二分查找)实例,需要的朋友可以参考一下

    java中折半法查找方法

    在数组中用java折半法查找指定的数字,提供了2个方法,一个是递归另一个不是递归方法,好东西大家分享。。。

    用折半查找法实现排序问题

    public int searchNumber(double num, boolean updown) {// 折半查找算法 int left = 0, right = Array.length - 1, middle = -1; while (left ) { middle = (left + right) / 2; if (num == Array[middle]) ...

    Java代码递归的折半查找算法

    递归调用的折半查找java代码,算法分析与设计实验报告。

    java程序写的 折半查找

    java写的折半查找法,使用间的循环语句,但是逻辑可能不够简洁,希望互相学习!

    java 快速排序 折半查找的界面实现

    java 快速排序 折半查找 的界面实现(并附有递归分治法PPT)

    有15个数折半查找法.md

    有15个数折半查找法

    java源码包2

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    分治法应用(折半查找也叫二分查找)

    用分治法思想实现二分查找,Java语言描述。

    javascript折半查找详解

    折半查找法: 在有序表中,把待查找数据值与查找范围的中间元素值进行比较,会有三种情况出现: 1) 待查找数据值与中间元素值正好相等,则放回中间元素值的索引。 2) 待查找数据值比中间元素值小,则以整个查找...

    Java 选择、冒泡排序、折半查找(实例讲解)

    下面小编就为大家带来一篇Java 选择、冒泡排序、折半查找(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java实现折半排序算法

    折半插入排序法,又称二分插入排序法,是直接插入排序法的改良版,也需要执行i-1趟插入,不同之处在于,第i趟插入,先找出第i+1个元素应该插入的的位置,假定前i个数据是已经处于有序状态。

    Java实验报告(5).doc

    随机生成100个0到200的整数,用折半查找法(二分法)查找50是第几个数, 并输出查找过程(即和什么数进行了比较)。 (折半查找是在已经排序的数据中做的查找,所以先要排序) 2.显示任意一个月份的日历(&gt;1900)...

    白盒测试实验

    代码的功能是:用折半查找法在元素呈升序排列的数组中查找值为key 的元素。 public int binSearch ( int array[], int key ) { int mid, low, high; low = 0; high = array.length-1; while ( low ) { mid = (low ...

    java算法与数据结构

    (9)线性表的查找(顺序、折半和分块) 3.树形结构 (1)二叉树的性质及存储结构 (2)二叉树的遍历 (3)线索二叉树 (4)树的存储结构 (5)树、二叉树与森林的转化方法 (6)哈夫曼树 (7)二叉排序树及平衡化 ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例190 泛型化的折半查找法 241 第9章 编程常用类 343 9.1 Calendar类的使用 244 实例191 简单的数字时钟 244 实例192 简单的电子时钟 245 实例193 简单的模拟时钟 246 实例194 简单的公历万年历 248 实例195 查看...

    最新JAVA编程题全集_50题及答案

    // 折半查找法 public static boolean BinarySearch(int keyValue) { int left; // 左边界变量 int right; // 右边界变量 int middle; // 中位数变量 System.out.println("数据长度:"+len)...

Global site tag (gtag.js) - Google Analytics