查找算法
面试的时候一般也会考察二分查找算法,在数组中查找 指定的元素。二分查找排序的是有序的数组。
折半查找为总数为奇数时,取中间的,总数为偶数时,取中间右边的。
// 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;
}
浙公网安备 33010602011771号