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