#include<iostream>
using namespace std;
const int MaxSize = 20;
typedef int KeyType;
typedef struct {//顺序表的结构
KeyType key;
int data;
}RecType;
typedef struct {//顺序表
RecType data[MaxSize];
int length;
}Sqlist;
void CreateList(Sqlist*& L, int a[], int n) {//建立顺序表
int i = 0, k = 0;
L = (Sqlist*)malloc(sizeof(Sqlist));
while (i < n)
{
L->data[k].key = a[i];
k++, i++;
}
L->length = k;
}
int BinSearch(RecType R[], int n, KeyType k) {//二分查找
int low = 0, high = n - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (k == R[mid].key)
return mid + 1;
if (k < R[mid].key)
high = mid - 1;
else
low = mid + 1;
}
return 0;
}
void DestroyList(Sqlist*& L) {//销毁顺序表
free(L);
}
int main()
{
int a[] = { 0,2,4,7,8,9,10,12,15,19 };
Sqlist* b;
CreateList(b, a, 10);
cout << "数据为9的节点在顺序表中的位置为:";
cout << BinSearch(b->data, 10, 9) << endl;
DestroyList(b);
return 0;
}
顺序表上的二分查找
最新推荐文章于 2022-03-16 20:32:37 发布