数据结构基础(5)-->二分查找

原创 2012年03月31日 13:48:04
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>

int binary_serch(int *arr, int arr_len, int value)
{
	int l = 0;
	int h = arr_len - 1;
	int m;
	while(l <= h) {
		m = l + ((h-l)>>1);
		if(value > arr[m]) {
			l = m + 1;
		} else if(value < arr[m]) {
			h = m - 1;
		} else {
			return m;
		}
	}
	return -1;
}

int main(int argc, char *argv[])
{
	int pos;
	int arr[10] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
	for(pos=0; pos<10; ++pos) {
		printf("%2d  ", pos);
	}
	printf("\n");
	for(pos=0; pos<10; ++pos) {
		printf("%2d, ", arr[pos]);
	}
	printf("\n\n");

	pos = binary_serch(arr, 10, 9);
	printf("  9's pos = %2d...\n", pos);
	pos = binary_serch(arr, 10, 1);
	printf("  1's pos = %2d...\n", pos);
	pos = binary_serch(arr, 10, 19);
	printf(" 19's pos = %2d...\n", pos);
	pos = binary_serch(arr, 10, 10);
	printf(" 10's pos = %2d...\n", pos);
	pos = binary_serch(arr, 10, -10);
	printf("-10's pos = %2d...\n", pos);
	pos = binary_serch(arr, 10, 30);
	printf(" 30's pos = %2d...\n\n", pos);

	return 0;
}

运行测试结果:

 0   1   2   3   4   5   6   7   8   9  
 1,  3,  5,  7,  9, 11, 13, 15, 17, 19, 

  9's pos =  4...
  1's pos =  0...
 19's pos =  9...
 10's pos = -1...
-10's pos = -1...
 30's pos = -1...



数据结构基础(10)------------二分查找算法(BinarySearch)

数据结构基础(9)------------二分查找算法(BinarySearch) 1.二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此...

数据结构基础(2) --顺序查找 & 二分查找

顺序查找适用范围: 没有进行排序的数据序列缺点: 速度非常慢, 效率为O(N)//实现 template Type *sequenceSearch(Type *begin, Type *end, c...

数据结构试验 二分查找

  • 2012年01月04日 23:51
  • 2KB
  • 下载

c++数据结构---二分查找

  • 2012年03月15日 23:03
  • 32KB
  • 下载

数据结构与算法分析(Java语言描述)(15)—— 二分查找(递归与非递归)

非递归int find(int[] arr, int target){ int l=0, r=arr.length-1; while(l target) r = mid-1;

数据结构二分查找代码

  • 2011年06月27日 19:53
  • 1KB
  • 下载

PTA数据结构与算法题目集(中文)4-10 二分查找 (20分)

本题要求实现二分查找算法。 函数接口定义: Position BinarySearch( List Tbl, ElementType K ); 其中List结构定义如下: typed...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构基础(5)-->二分查找
举报原因:
原因补充:

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