顺序查找:
太简单就不说了!
二分查找:
int BinSearch(const int Array[], int len/*数组长度*/, int key/*要找元素*/)
{//二分查找
//采用分治的方法来查找,但是这个数组必需是有序的, 这个例子是升序排列
int left; //当前查找长度中,最左边的下标
int right; //当前查找长度中,最右边的下标, right是超尾的下标
int mid; //中间点的下标
left = 0;
right = len;
while (left <= right)
{
mid = (left + right) / 2; //中间下标等于左+右/2
if (key < Array[mid])
{//当关键字小于中间元素,把右下标设置为中间下标左侧的下标
right = mid - 1;
}
else if (key > Array[mid])
{//当关键字大于中间元素,把左下标设置为中间下标右侧的下标
left = mid + 1;
}
else
{//找到就返回
return mid;
}
}//没有找到就返回-1
return -1;
}
分块查找,这里说说概念,
1 把集合分成多个 块, 后一个块的所有元素必需大于前一个块中的所有元素, 但是, 每个块中的元素可以不是有序的
2 建立一个索引, 计录每个块的最大元素和每个块的首地址(块的开始下标)
3 把关键字同每个块中最大的元素比较, 当满足 第n - 1块 < key < 第n块 就说明key在n - 1块中, 然后该块中进行顺序查找, 否则, 该集合中不存在该关键字元素