我是靠谱客的博主 直率小虾米,最近开发中收集的这篇文章主要介绍<数据结构>折半查找算法实现前言一、折半查找算法(采用顺序表存储结构)二、使用步骤总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 前言
  • 一、折半查找算法(采用顺序表存储结构)
  • 二、使用步骤
    • 1.代码功能实现
  • 总结


前言

提示:本篇主要是本小白大学期间对数据结构实验的一些基本代码功能实现,希望对一同数据结构的伙伴有所帮助。


提示:以下是本篇文章正文内容,下面案例可供参考

一、折半查找算法(采用顺序表存储结构)

要求:编写函数,建立有序表,采用折半查找实现某一已知的关键字的查找。(采用顺序表存储结构)

折半算法思想:设置两个指针low,high,分为上界和下界,对于初始low=0
high=n-1;
令mid=(low+high)/2
前提:具有升序或者降序关系
优点:查询效率高

二、使用步骤

1.代码功能实现

代码如下(示例):

#include<stdio.h>
#define N 9//数组个数

extern int binsearch(int *a,int key);

int main()
{
	int i,key; 
	char ch;
	int a[N]={1,2,3,6,7,8,9,89,200};//建立有序数组
	while(1){
	printf("please input the key:n");//输入关键字
	scanf("%d",&key);
 	i = binsearch(a,key);//查询函数
	if(i == -1)
	printf("search errorn");
	else
	printf("search %d at %dn",key,i);
	while(getchar() != 'n');//吸收回车字符
	printf("continue?(y|Y):n");//判断是否继续查询
	scanf("%c",&ch);
	if(ch =='y' ||ch == 'Y')
		continue;
	else 
	  	break;
	}
}

int binsearch(int *a,int key)
{
	int i,low,high,mid;
	low =a[0];//下界
	high = a[N-1];//上届
	while(1)//持续查询
	{
		mid= (low +high)/2;
		if(mid == key)
			return mid ;
		else if(mid < key)
		{
			low = mid + 1;//查询的数值大于mid,下届上移
		}else{
			high = mid -1 ;//查询的数值小于mid,上界下移
		}
	}
	return -1;	
}

总结

提示:本篇主要是对折半查找的基本功能代码实现,代码与逻辑思考总体不难,算法主函数中若包含有持续判断时,需要对回车n符号记得设置getchar函数才能正常进入判断循环.
希望能对你理解折半查找算法带来一定的帮助

最后

以上就是直率小虾米为你收集整理的<数据结构>折半查找算法实现前言一、折半查找算法(采用顺序表存储结构)二、使用步骤总结的全部内容,希望文章能够帮你解决<数据结构>折半查找算法实现前言一、折半查找算法(采用顺序表存储结构)二、使用步骤总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部