/*
1、建立顺序表
2、对有序表进行二分查找
a、初始化:设置指向n个元素的参数下标:low(指向最小的元素)、high(指向最大的元素)、mid(中间元素)=(low+hingh)/2
b、比较(将要查找的key元素与s[mid].key元素进行对比):
(1)key = s[mid].key,返回mid下标
(2)key < s[mid].key,令high=mid-1,重新进行比较
(3)key > s[mid].key,令low=mid+1,重新进行比较
优点:效率提高,
确定:必须是顺序表,并且可以比较大小
*/
#include <iostream>
#define MAXSIZE 100
using namespace std;
struct SSTable
{
int key[MAXSIZE]; // SSTable中的元素
int length; // SSTable的元素长度
};
// 初始化顺序表(建立顺序表)
void InitSSTable(SSTable &s);
// 二分查找
int Search_Bin(SSTable &s, int key);
int main()
{
SSTable s;
InitSSTable(s);
cout << Search_Bin(s,20) << endl;
return 0;
}
// 初始化顺序表(建立顺序表)
void InitSSTable(SSTable &s)
{
s.key[1] = 10;
s.key[2] = 20;
s.key[3] = 30;
s.length = 3;
}
// 二分查找
int Search_Bin(SSTable &s, int key)
{
// 2、对有序表进行二分查找 a、初始化:设置指向n个元素的参数下标:low(指向最小的元素)、high(指向最大的元素)、mid(中间元素) =(low + hingh) / 2 b、比较(将要查找的key元素与s[mid].key元素进行对比):
int low = 1, high = s.length, mid = (low + high) / 2;
while (low < high)
{
// (1)key = s[mid].key,返回mid下标
//(2)key < s[mid].key, 令high = mid - 1,重新进行比较
//(3)key > s[mid].key, 令low = mid + 1,重新进行比较
if (key < s.key[mid])
high = mid - 1;
else if (key > s.key[mid])
low = mid + 1;
else
return mid;
}
return 0;
}
14、有序表的查找
于 2023-07-09 20:33:22 首次发布