当前位置:文档之家› 排序与折半查找

排序与折半查找

实验5 排序与折半查找
实验人:叶展望学号:Xb14680101 时间:12.21
一、实验目的:
1.掌握顺序查找、折半查找算法的思想及高级语言程序实现方法;
2.掌握插入类排序的思想及程序实现方法。

二、实验内容:
对已给出的关键字序列进行排序后,在折半查找某关键字值。

三、实验步骤:
从键盘输入若干关键字值(可以是整数),然后对它们采用一趟直接插入排序后,输入待查找的数,查找成功返回该数的位置、查找失败返回错误信息。

四、主程序代码
#include <stdio.h>
#define LENGTH 10
int source[LENGTH] = {10,12,28,37,54,65,69,86,90,98};
//二分查找,查找key在原始数据a中的位置
int BinarySearch(int a[],int n,int key){
int low,high,mid;
low = 0;
high = n-1;
while(low<=high){
mid = (low + high)/2; //每次让中间数取最小和最大的中间
if(a[mid] == key) //查找的元素正好等于中间值
return mid;
else if(key < a[mid]) //查找的元素小于中间值,在最小值和上次中间值范围内查找
high = mid - 1;
else
low = mid + 1; //查找的元素大于中间值,在中间值和最大值范围查找
}
return -1;
}
int main(){
int i,key,pos;
printf("原始数据:\n");
for(i = 0 ; i < LENGTH ; i++)
printf("%d ",source[i]);
printf("\n请输入要查找的数据:");
scanf("%d",&key);
pos = BinarySearch(source,LENGTH,key);
if(pos > -1)
printf("\n查找成功,查找元素位于第 %d 个",pos); else
printf("\n查找失败");
}。

相关主题