折半查找变形

原创 2015年11月18日 19:05:57

折半查找思想的应用:


public class BinarySearch {
	
	//将有序数组分两半,将前一部分有序的数组,放到后面
	//如[1,2,3,4,5,6,7,8,9,10] 换成[5,6,7,8,9,10,1,2,3,4]
	//然后对这样的数组进行查找

	//测试代码
	public static void main(String[] args) {		
		int [] array = {5,6,7,8,9,10, 1,2,3,4};			
		//查找3, 并打印其对应下标
		System.out.println(arrange(array, 3));
		}
		
//	查找算法
	public static int arrange (int [] array, int key  ){		
		int left =0;
		int right = array.length-1;
		
		while (left <=right ){			
			int middle = (left + right)/2;
			if (array[middle] == key) return middle;			
			//如果[middle ....right]有序
			if (array[middle] <=array[right]){				
				//如果[middle ....right]有序并且 key 在[middle ....right]中
				if (array[middle] < key && key <= array[right]){					
					left = middle + 1;
				}else{					
					right = middle - 1;
				}
			}else{//如果[left ....middle]有序并且 key 在[left ....middle]中	
				
				if (key < array[middle] && array[left] <= key){
						right =  middle -1;
				}else{
					left = middle + 1;
				}					
			}
		}
				
		return -1;				
	}		
}





数组折半查找

折半查找必须是已经排序好的数组 public static void main(String[] args) { int[] aa = {1,2,3,4}; int num = 6; int ...
  • renyajie2345
  • renyajie2345
  • 2017年05月13日 11:21
  • 367

折半查找javascript

折半查找也叫做二分查找,是针对有序表的一种查找方式,其思想如下:          将数组的第一个位置设为下边界;          将数组的最后一个位置设为上边界;          如果下边...
  • mevicky
  • mevicky
  • 2015年05月26日 15:51
  • 946

数据结构之折半查找法(Binary Search)

对于要查找的数据已经排序,此时仍然可以使用顺序查找法来进行查找,但是此时有更加简便的方法, 那就是“折半查找法(Binary Search)”。 折半查找法的实现步骤如下: 假设数组的上...
  • wuxiaoer717
  • wuxiaoer717
  • 2012年08月18日 11:11
  • 5453

算法 - 折半查找(C#)

递归实现: // ------------------------------------------------------------------------------------------...
  • chimomo
  • chimomo
  • 2009年09月30日 14:53
  • 36265

折半查找的迭代与递归实现

以此纪念2013年12月18日在百度面试失败,其中写出了二分法的迭代查找却没写出递归查找 #include #define LEN 10 int bin_search(int array[], i...
  • manwea
  • manwea
  • 2013年12月25日 18:01
  • 843

数据结构例程——线性表的折半查找

本文是[数据结构基础系列(8):查找]中第3课时[线性表的折半查找]的例程。 折半查找 #include #define MAXL 100 typedef int KeyType; typedef ...
  • sxhelijian
  • sxhelijian
  • 2015年11月19日 18:57
  • 3920

【数据结构_折半查找_1010】折半查找的实现

折半查找必须是在一个有序数组里进行查找,每次查找一半,不符合则继续折半。 #include #include #include #include using namespace std; i...
  • IronCarrot
  • IronCarrot
  • 2017年04月20日 10:38
  • 525

基础算法之五-查找: 折半查找

折半查找              又称为二分查找。这种查找方法要求查找表的数据是线性结构保存,并且还要求查找表中的数据是按关键字由小到大有序排列。              折半查找(二分查找)...
  • shuilan0066
  • shuilan0066
  • 2012年05月28日 11:10
  • 8113

折半查找有序数组中的某个元素

#define _CRT_SECURE_NO_WARNINGS 1 #include #include int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 8...
  • ChaseRaod
  • ChaseRaod
  • 2016年12月02日 01:17
  • 862

【数据结构】折半查找(二分查找)

折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,...
  • kuzuozhou
  • kuzuozhou
  • 2012年09月15日 21:03
  • 1045
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:折半查找变形
举报原因:
原因补充:

(最多只允许输入30个字)