数据结构实验八:折半查找
折半查找
1 实验目的
- 通过编程实现折半查找算法,掌握顺序查找方法的理论原理和实现过程,从而加深对顺序查找方法的理解,提高这般查找方法的编程应用技巧。
2 实验内容
- 编写一个程序,输出在顺序表(1,2,3,4,5,6,7,8,9,10)中采用这般查找方法查找关键字9的过程。
3 软件程序
main.cpp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include "stdafx.h"
#include "stdio.h"
#include "malloc.h"
#define MAXL 100 //最大长度
typedef int KeyType; //定义关键字类型为int
typedef char InfoType;
typedef struct
{
KeyType key;
InfoType data;
}RecType;
void CreateList(RecType R[],KeyType keys[],int n) //创建顺序表
{
for (int i=0;i<n;i++)
{
R[i].key = keys[i];
}
}
void DispList(RecType R[],int n) //输出顺序表
{
for(int i=0;i<n;i++)
{
printf("%d ",R[i]);
}
}
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 -1;
}
int main()
{
RecType R[MAXL];
KeyType k=9;
int a[]={1,2,3,4,5,6,7,8,9,10},i,n=10;
CreateList(R,a,n); //建立顺序表
printf("关键字序列:"); DispList(R,n);
printf("查找%d的比较过程如下:\n",k);
if ((i=BinSearch(R,n,k))!=-1)
printf("元素%d的位置是%d\n",k,i);
else
printf("元素%d不在表中\n",k);
return 1;
}
4 实验结果
本文由作者按照 CC BY 4.0 进行授权