码迷,mamicode.com
首页 > 编程语言 > 详细

有序数组的二分查找

时间:2015-01-28 19:49:47      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:线性表   二分查找   java   

二分查找的优点是比较次数少,查找数度快,但是在查找之前必须要简历有序表。另外,二分查找只适用于顺序存储的有序表,而不适用于链接存储的有序表。


二分查找的过程:首先将x与数组的中间项进行比较,若x小于中间项的值,则在线性表的前半部分进行二分查找;若x大于中间项的值,则在线性表的后半部分进行二分查找;若x等于中间项的值,则查找结束。若待二分的子表长度为0时仍然没有找到这个元素,则说明数组中没有x。 


<span style="white-space:pre">	</span>// 二分查找    x 数组 ,n 数组长度, a要查找的元素
	private static int dichotomyFind(int[] x, int n, int a) {
		int s, t, k;
		s = 0; 		    	// 数组起始元素
		t = n - 1;		    // 数组最后一个元素
		for (;;) {
			if (t == s) { 			// 只有一个元素
				if (x[t] == a) {
					return t;
				} else {
					return -1;
				}
			} else {
				k = (s + t) / 2;      // 二分
				if (x[k] < a) {    
					s = k;
				} else if (x[k] > a) {
					t = k;
				} else {
					return k;
				}

			}
		}

	}


有序数组的二分查找

标签:线性表   二分查找   java   

原文地址:http://blog.csdn.net/zbao6062/article/details/43234179

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!