查找算法

面试的时候一般也会考察二分查找算法,在数组中查找 指定的元素。二分查找排序的是有序的数组。

折半查找为总数为奇数时,取中间的,总数为偶数时,取中间右边的。

// keshan.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdio.h>

//时间复杂度
//顺序查找
int seq_search(int a[],int n,int key){
	for(int i=0;i<n;i++){
		if(a[i]==key){
			return i;
		}
	}
	return -1;
}

//折半查找
//参考c++语言程序设计 郑莉p381
//时间复杂度:o(log(N))
//不能在单链表进行
int bin_search(int a[],int n,int key){
	int low = 0;
	int high = n - 1;
	while(low<=high){
		int mid = (low + high)/2;
		if(key==a[mid]){
			return mid;
		}else if(key<a[mid]){
			high = mid - 1 ;	
		}else{
			low = mid + 1;
		}
	}
	return -1;
}



int _tmain(int argc, _TCHAR* argv[])
{
	int a[] = {1,2,3,5,90};
	int res = 0;
	res = seq_search(a,5,90);
	printf("sequence find result index is %d\n",res);
	res = bin_search(a,5,90);
	printf("find result index is %d\n",res);
	getchar();
	return 0;
}


posted @ 2017-03-08 16:35  开往春天的拖拉机  阅读(102)  评论(0编辑  收藏  举报