首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

2分(折半)查找

2012-08-28 
二分(折半)查找/** * 递归实现二分查找 */int recurBinarySearch(dataType searchValue, dataType data[],

二分(折半)查找

/** * 递归实现二分查找 */int recurBinarySearch(dataType searchValue, dataType data[], int start,int end){if (start <= end){int mid = (end + start) / 2;if (searchValue == data[mid])return mid;else if (searchValue < data[mid])return recurBinarySearch(searchValue, data, start, mid);elsereturn recurBinarySearch(searchValue, data, mid + 1, end);}return -1;}/** * 线性查找 */int normalBinarySearch(dataType searchValue, dataType data[], int start,int end){while (start <= end){int middle = (start + end) / 2;if (searchValue < data[middle])end = middle;else if (searchValue > data[middle])start = middle + 1;elsereturn middle;}return -1;}/** * 二分查找,找到返回所在数组的下标;没找到返回-1 */int binarySearch(dataType searchValue, dataType data[], int len){//return recurBinarySearch(searchValue, data, 0, len - 1);return normalBinarySearch(searchValue, data, 0, len - 1);}

?

热点排行