精华内容
下载资源
问答
  • 折半查找 c语言函数

    2009-02-01 17:55:27
    折半查找c语言函数, 在数组总查找 例子
  • 数据结构-折半查找 C语言源码

    千次阅读 2019-03-17 13:13:24
    数据结构-折半查找 C语言源码 #include<stdio.h> #include<stdlib.h> struct ZBCZ{ int*elem; int length; }; void ko(ZBCZ& l,int n) { int hj; ...

    一家懂得用细节留住客户的3年潮牌老店我必须支持!➕🛰:luyao1931

    在这里插入图片描述

    数据结构-折半查找 C语言源码

    算法思想:先确定待查记录所在的范围,然后逐步缩小范围直到找到或找不到该记录为止。

    #include<stdio.h>
    #include<stdlib.h>
    struct ZBCZ{
    	int*elem;
    	int length;
    };
    void ko(ZBCZ& l,int n)
    {
    	
    		int hj;
    		l.elem=(int*)malloc(sizeof(int)*n);
    		for(int k=0;k<n;k++)
    		{
    		scanf("%d",&hj);
    		l.elem[k]=hj;	
    		}
    		l.length =n;
    }
    void xianshi(ZBCZ l)
    {
    	for(int i=0;i<l.length ;i++)
    	{
    		printf(" %d ",l.elem[i]);
    	}
    }
    int find(ZBCZ l,int k)
    {
    	
    	int high;
    	int low;
    	int mid; 
    	low=0;
    	high=l.length;
    	high--;
    	if(l.elem[low]==k)
    	{
    		return -2;
    	}
    	if(l.elem[high]==k)
    	{
    		return -3;
    	}
    	mid=(high+low)/2;
    	int count=0;
    	while(l.elem[mid]!=k)
    	{
    		if(count==l.length )
    		{
    			return -1;
    		}
    			if(l.elem[mid]<k)
    		{
    			low=mid;
    			mid=(high+low)/2;
    			count++;
    		}
    			if(l.elem[mid]>k)
    		{
    			high=mid;
    			mid=(high+low)/2;	
    			count++;
    		}
    	
    	}
    	
    	printf("目标元素序号%d\n",mid);
    	return count;
    }
    main()
    {
    	int n;
    	printf("请输入表长");
    	scanf("%d",&n);
    	ZBCZ l;
    	printf("\n开始输入表中元素");
    	ko(l,n);
    	int k;
    	printf("请输入待查找元素");
    	scanf("%d",&k);
    	int f=find(l,k);
    	if(f!=-1&&f!=-2&&f!=-3)
    	printf("查找次数为%d",f);
    	if(f==-2)
    	{
    		printf("该元素位于表头"); 
    	}
    	if(f==-3)
    	{
    		printf("该元素位于表尾"); 
    	 } 
    	 if(f==-1)
    	 {
    	 	printf("无待查找元素"); 
    	 } 
    	 printf("\n");
    	 xianshi(l);
    	 printf("\n%d",l.length); 
    	return 0;
    	}
    

    在这里插入图片描述
    快看,这才是重点!我想能看到这里的同学,无外乎两种人:来拷贝代码的人 和 来拷贝代码的人。

    但,在拷贝走的时候,你要想清楚一件事,把代码拷走之后有个蛋用,搞明白对你来说才是最重要的。

    好了,就酱紫。

    老铁,这要是都不赞,说不过去吧!!!哦,对了,你这么好看,关注一下呗。。。

    最后对自己说:
    你现在所遭遇的每一个不幸,都来自一个不肯努力的曾经。

    展开全文
  • 折半查找 C语言 算法

    2010-06-27 11:50:42
    c语言 折半 查找 算法 数据结构 绝对可用 欢迎下载 绝对可用 欢迎下载
  • 源码如下: 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表...//折半查找,前提是有序 #include <stdio.h...

    源码如下:

    首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

    //折半查找,前提是有序
    
    #include <stdio.h>
    #define N 10
    int main()
    {
        int arr[N] = {0,1,2,3,4,5,6,7,8,9};
        int left = 0;
        int right = N-1;
        int mid;
        int find;
        printf("输入一个整数:");
        scanf("%d",&find);
    
        while(left <= right)
        {
            mid = (left + right)/2;
            if(arr[mid] == find)
                break;
            else if(arr[mid] < find)
                left = mid + 1;
            else
                right = mid -1;
        }
    
        if(left <= right)
            printf("该数存在\narr[%d] = %d\n",mid,arr[mid]);
        else
            printf("该数不存在");
    
        return 0;
    }
    

    另一种判断输出方法

    //折半查找,前提是有序
    
    #include <stdio.h>
    #define N 10
    int main()
    {
        int arr[N] = {1,2,3,4,5,6,7,8,9,10};
        int left = 0;
        int right = N-1;
        int idx = -1;
        int mid;
        int find;
        printf("输入一个整数:");
        scanf("%d",&find);
    
        while(left <= right)
        {
            mid = (left + right)/2;
            if(arr[mid] == find)
            {
                idx = mid;		//注意!
                break;
            }
            else if(arr[mid] < find)
                left = mid + 1;
            else
                right = mid -1;
        }
    
        if(idx != -1)	//注意!
            printf("该数存在\narr[%d] = %d\n",mid,arr[mid]);
        else
            printf("该数不存在");
    
        return 0;
    }
    
    展开全文
  • 折半查找c语言实现

    2011-12-01 22:26:38
    更具数据结构的作业任务 这是一个容易易懂的c实现的折半查找, 很好的!!
  • 折半查找是对有序序列的查找 */ #include <stdio.h> #include <stdlib.h> int Binary_Search(int a[], int key, int low, int high) //数组地址a,查找关键字key,最低下标low,最高下标high { int ...

    C语言
    编译环境:vc6.0

    /*
    折半查找是对有序序列的查找
    */
    #include <stdio.h>
    #include <stdlib.h>
    
    int Binary_Search(int a[], int key, int low, int high)			//数组地址a,查找关键字key,最低下标low,最高下标high
    {
    	int mid = (low + high) / 2;
    	if (low > high)
    		return -1;
    	if (key == a[mid])
    		return mid;
    	else if (key > a[mid])
    		return Binary_Search(a, key, mid + 1, high);
    	else return Binary_Search(a, key, low, mid - 1);
    }
    
    int main()
    {
    	int key,answer;							//key待查找关键字,answers结果数组下标
    	int a[] = { 0,2,4,6,8,10,11,12,14,15,16,20 };				//共12个数
    	printf("输出需要查找的数\n");
    	scanf("%d", &key);
    	if ((answer = Binary_Search(a, key, 0, 11)) != -1)				//查找成功
    		printf("下标为:%d\n", answer);
    	else printf("查询无果\n");
    	return 0;
    }
    

    测试
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    展开全文
  • #include<stdio.h>//标准的输入和输出流 ...printf(“请输入你的总数和需要查找的数:\n”);//提示用户输入相应信息 scanf_s("%d%d", &n,&m);//将用户刚刚输进缓冲区的数读入 printf(“请输

    #include<stdio.h>//标准的输入和输出流
    #include<stdlib.h>//system(“pause”)要用
    int main(void)//主函数
    {
    int n = 0,m=0,i=0;//定义三个整形变量
    int a[99];//定义一个长度为99的整形数组
    printf(“请输入你的总数和需要查找的数:\n”);//提示用户输入相应信息
    scanf_s("%d%d", &n,&m);//将用户刚刚输进缓冲区的数读入
    printf(“请输入需要在哪些数中查找:\n”);//提示用户输入相应信息
    for (i = 0; i < n; i++)
    {//利用for循环,将用户刚刚输进缓冲区的数全部读入
    scanf_s("%d", &a[i]);
    }
    int low = 0, high = n - 1, mid;//注意这里只能定义low high mid的变量,不能用数组的方式
    //来定义 !!
    while (low <= high)//当low<=high的时候,循环都可以进行下去,
    //当low>high的时候,这个时候都没有找到,说明该数组中没有我们想要找的元素
    { mid=(high+low)/2;//因为high和low随时在变,所以他的中间的数也随时在变,所以要定义在
    //括号里面来
    //注意折半查找只能适合有序的一列数中找
    if (m == a[mid])
    {//如果m == a[mid],说明我们要找的数,是该数组的中间的一个元素,等于找到了,所以就break掉
    break;
    }
    if (m < a[mid])
    {//如果我们想要查找的数比这个数组中 中间的一个元素还要小,
    //那么我们就可以缩小范围,
    //那么我们所需要查找的最大的数的下标就应该是mid-1
    high = mid - 1;
    }
    if (m > a[mid])
    {//如果我们想要查找的数比这个数组中 中间的一个元素还要大,
    //那么我们就可以缩小范围,
    //那么我们所需要查找的最小的数的下标就应该是mid+1
    low = mid + 1;
    }
    }
    if (low <= high)//如果在low <= high的时候就break掉的话,
    //那么说明在数组中已经找到了那个元素
    {
    printf(“找到了:\n”);
    }
    else printf(“没有找到:\n”);//否则就输出没有找到的信息
    system(“pause”);//将黑色窗口停留,用户按任意键后才会退出
    return 0;//程序正常运行要返回一个0
    }

    展开全文
  • 排序容量可自定义,对数组分别用冒泡法和选择法排序。然后用折半查找对输入的数查找,看在数组中是否出现。
  • 折半查找.C语言系统上机代码
  • c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找...
  • 折半查找——C语言

    2018-10-07 21:14:35
    折半查找是一个比较常用的查找方法。相较于最原始的这个 查找过程为:先确定待查找记录所在的范围(区间),然后逐步缩小范围直到找到或找不到该记录为止。 具体是设立三个指针low,hight,mid,分别指向待查找的...
  • 查找_折半查找(C语言)

    2020-07-18 15:38:24
    折半查找 1.查找原理 折半查找(Binary Search)也称二分查找,是一种效率较高的查找方法,但是折半查找有局限性,它只适用于顺序存储结构的有序表 查找过程:从表的中间位置开始,判断与给定的值是否相等,若...
  • 折半查找-C语言实现

    2020-06-06 16:40:22
    折半查找要求表中数据是有序的。 折半查找的循环条件是low<=high而不是low<high,为low=high时,查找区间还有最后 一 个结点, 还要进 一 步比较。 //折半查找 int SearchBin(SqList &L, int key){ ...
  • 折半查找C语言

    千次阅读 多人点赞 2019-05-25 18:48:26
    折半查找: 设定查找范围的下限low,上限high, 由此确定查找范围的中间位置mid; 中间位置的值等于待查的值,查找成功 中间位置的值小于待查的值,low=mid+1 中间位置的值大于待查的值,high=mid-1 直到low>...
  • C语言链表实现对链表的两种查找方法: 顺序查找和折半查找
  • 折半查找(C语言)

    2021-06-03 21:53:53
    折半查找法, 也称为二分查找法, 二分搜索, 是一种在有序数组中查找某一特定元素的搜索算法.搜索过程中从数组的中间元素开始, 如果中间元素正好是要查找的元素, 则搜索过程结束;如果某一特定元素大于或者小于中间...
  • 折半查找C语言版)

    2008-06-20 13:55:04
    折半查找C语言版)。。。。。。。。。。。。。。。。。。
  • 递归折半查找C语言

    2019-10-26 08:40:02
    /*折半查找*/ int binary_Search(int* arry, int key, int left, int right) //返回key所在的数组下标 { int mid = (left + right) / 2; if (arry[mid] == key) return mid; else if (arry[mid]...
  • 折半查找的应用前提是数组是一个有序数组。比较数组中间值和查找值的大小关系,然后确定下一步的查找范围,逐次缩小。折半查找的时间复杂度为O(log2(n)),是一种效率很高的查找方式。 程序实现 #include <stdio.h...
  • 折半查找C语言程序,可用 基于C语言的程序 利用顺序表,学习数据结构时会有用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 812
精华内容 324
关键字:

折半查找c语言

c语言 订阅