排序与折半查找

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验5 排序与折半查找

实验人:叶展望学号:Xb14680101 时间:12.21

一、实验目的:

1.掌握顺序查找、折半查找算法的思想及高级语言程序实现方法;

2.掌握插入类排序的思想及程序实现方法。

二、实验内容:

对已给出的关键字序列进行排序后,在折半查找某关键字值。

三、实验步骤:

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

四、主程序代码

#include

#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查找失败");

}

相关文档
最新文档