C语言--顺序查找、折半查找

这篇具有很好参考价值的文章主要介绍了C语言--顺序查找、折半查找。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

顺序查找

实现逻辑 

顺序查找(sequential search)就是按照数组的顺序一 一比较数组中的元素的值和所查找的值。如下图表所示,遍历数组进行比较。若找到,则break跳出循环。

a[0] a[1] a[2] a[3] a[4]
9 12 22 13 34
22==9?
22==12?
22==22?

实现代码

#include<stdio.h>
int main(){

	int arr[5]={9,12,22,13,34};
	int i,x,n;
	n=0;	//数组下标记录
	printf("请输入查找元素x:");
	scanf("%d",&x);
	for(i=0; i<5; i++,n++)
		if(arr[i] == x){
			break;
		}
	if(n==5)
		printf("查找失败\n");
	else{
		printf("查找成功,为数组第%d位元素\n",n+1);
	}

	return 0;
}

运行结果 

 C语言--顺序查找、折半查找,C,c语言,算法,笔记,排序算法

 C语言--顺序查找、折半查找,C,c语言,算法,笔记,排序算法

折半查找

实现逻辑 

         折半搜索(英语:half-interval search),也称二分搜索、对数搜索。是一种在有序数组中查找某一特定元素的搜索算法。

        折半搜索从数组的中间元素开始比较,若相等,则查找成功;若所查找的元素大于或小于中间元素,则与数组大于或小于中间元素的那一半数组元素的中间元素比较。若在某一步骤数组为空,则代表找不到。

        这种搜索算法每一次比较都使搜索范围缩小一半。

例子:

int a[5]={9,10,11,12,13};
int max,min,mid,n=13;//n为搜索元素,a[min]到a[max]则是每轮搜索的范围(边界)。
max=4;min=0;

第一轮 mid=(min+max)/2=4/2=2;元素n和a[mid]比较,n大于a[mid],则去右半区进行比较。

            缩小搜索区域min=mid+1=2+1=3;

第二轮 mid=(3+4)/2=3;元素n和a[mid]比较,n大于a[mid],则去右半区进行比较。

            缩小搜索区域min=mid+1=3+1=4;

第三轮 mid=(4+4)/2=4;元素n和a[mid]比较,n等于a[mid],则break跳出循环。

a[0] a[1] a[2] a[3] a[4]
9 10 11 12 13
min

mid

13==11?

max

min

mid

13==12?

max

min

mid

max

13==13?

实现代码 

#include<stdio.h>
int main(){
	//max为数列长度,a[0]作为第一个数组元素
	int a[10]={0,1,2,3,4,5,6,7,8,9},min=0,max=9,mid,n; 
	printf("请输入您要查找的数据:");
	scanf("%d",&n);
	while(min <= max){
		mid = (min+max)/2;
		if(n>a[mid])	//若大于中间元素
			min = mid+1;
		else if(n<a[mid]){//若大于中间元素
			max = mid-1;
		}else{
		printf("输入的数在数列的第%d位\n",mid+1);
			break;
		}
	}

    if(min > max)
		printf("查找失败\n");
    
	return 0;
}

运行结果 

C语言--顺序查找、折半查找,C,c语言,算法,笔记,排序算法

C语言--顺序查找、折半查找,C,c语言,算法,笔记,排序算法文章来源地址https://www.toymoban.com/news/detail-734280.html

到了这里,关于C语言--顺序查找、折半查找的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 折半插入排序算法详解之C语言版

    折半插入排序是插入排序方法中一种,相比较与直接插入排序算法,减少了排序过程中比较次数,也是一种常用的排序算法。 折半插入排序算法基本原理是将折半查找方法与直接插入排序方法相结合,也就是在每一次插入新元素时,利用折半查找方法找到其待插入的位置。

    2024年02月12日
    浏览(39)
  • 17-数据结构-查找-(顺序、折半、分块)

            简介:查找,顾名思义,是我们处理数据时常用的操作之一。大概就是我们从表格中去搜索我们想要的东西,这个表格,就是所谓的查找表(存储数据的表)。而我们怎么设计查找,才可以让计算机更快的去找到筛选我们所需要的信息呢,因此,关于怎么设计查找

    2024年02月09日
    浏览(59)
  • 排序算法:顺序查找

    简介 顺序查找(也称为线性查找)是一种 简单直观 的搜索算法。 按照顺序逐个比较列表或数组中的元素,直到找到目标元素或搜索完整个列表。 应用场景 数据集比较小,无需使用复杂的算法。 数据集没有排序,不能使用二分查找等基于有序数据集的算法。 需要在数据集

    2024年04月27日
    浏览(38)
  • C++数据结构之查找——静态查找表(顺序查找、折半查找、分块查找 带有gif以及图示)

    目录 一、查找的相关概念介绍 1.查找表(Search Table) 概念 对查找表的操作 查找表的分类 2.(Key) 概念 3.查找(Searching) 概念 4.衡量查找算法的标准 1.时间复杂度 2.空间复杂度 3.平均查找长度(ASL) 二、静态查找表 1.顺序查找 算法思路 算法举例 算法性能分析 不等概率

    2024年02月03日
    浏览(44)
  • C语言——折半查找法

    假如现在有一组数据,你想要查询这个具体某一个数据在这一堆数据中的所在位置,这个时候就需要程序在这一组数据中,找到与想要查找的目标数据相匹配的那个数据,然后返回相对应的位置。如果将问题再细化简化一点,假如现在有一组有顺序的数字,需要你编写程序找

    2024年02月01日
    浏览(39)
  • 折半查找算法(BinarySearch)

            查找算法是一种在数字列表中确定目标元素所在位置的算法。假设给定一个目标元素 11 和一个包含元素 11 的数字列表(例如 10, 11, 12,13,14, 15, 16, 17, 18, 19, 20),然后在该数字列表中找到目标元素的位置。         折半查找算法也叫做对分查找和二分查找。折半

    2024年02月03日
    浏览(43)
  • 数据结与算法之排序-插入排序(直接插入/折半插入/希尔)

    文章目录 目录 前言 一、什么是插入排序 1.直接插入排序 2.折半插入排序          3.希尔排序 总结 理解三种排序,并将三种排序用C++实现,借鉴了王卓老师和没有难学的知识的图例 提示:以下是本篇文章正文内容,下面案例可供参考         插入排序是简单直观的排序方

    2024年02月04日
    浏览(42)
  • 数据结构算法--1 顺序查找二分查找

    顺序查找时间复杂度为O(n) 我们可以借助Python中的函数enumerate,通过enumerate遍历列表返回其索引和值 也可以通过列表长度依次遍历: 但是二分查找时间复杂度为O(logn):

    2024年02月12日
    浏览(54)
  • 数据结构与算法之查找: 顺序查找 (Javascript版)

    顺序查找 思路 遍历数组 找到跟目标值相等元素,就返回它的下标 没有找到,返回-1 算法实现 总结 非常低效,算是入门搜索 时间复杂度:O(n) 对于数组结构或链表结构而言,没什么太多可说的

    2024年02月05日
    浏览(49)
  • 折半查找的判定树

    二叉判定树是用于描述解决问题的思路,比如可以使用判定树描述N个数的比较过程,是一种对过程的描述。 它也可以用于描述二分查找(即折半查找,以下都作二分查找)的过程。 描述二分查找的二叉判定树,我们也可以叫折半查找判定树, 从这样的判定树,我们可以分析

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包