c语言二分查找实验程序截图下载,c语言二分查找代码

本文目录一览:

怎样写二分查找算法的程序(用C语言实现)

我用一个子函数实现的,主函数你自己写,对你又好处,需要传入一个数组和数组长度n以及要查找的数,如果查找成功,返回x在数组中的位置,否则返回-1

int search(int *a,int x)

{ int low=0,high=n-1,mid,flag=-1;

while(low=high)

{ mid=(low+high)/2;

if(a[mid]==x) return mid;

else if(a[mid]low) low=mid+1;

else high=mid-1;

}

return flag;

}

谁能用c语言帮我写个二分法的查找程序??

#includestdlib.h

void

sort(int

a[],int

n){

/*排序函数,要使用二分法查找就必须对数组进行排序*/

int

i,k;

for(i=0;in;i++){

int

min=i;

for(k=i+1;kn;k++)

if(a[min]a[k])min=k;

if(i!=min){

a[min]+=a[i];/*这里是运用加减法交换两个数*/

a[i]=a[min]-a[i];

a[min]-=a[i];

}

}

}

int

find(int

a[],int

n,int

key){/*二分法查找;参数:数组名,数组长度,查找关键字*/

int

min=0,max=n-1;/*二分法查找头尾变量*/

while(minmax){/*如果最头的变量值大于最尾变量的值,则查找不到,查找失败*/

int

cen

=

(min+max)/2;

if(a[cen]==key)

return

cen;/*如果查到,则返回关键字在排序数组的下标*/

if(cen==min

||

cen==max)break;/*如果中间变量等于头尾任一个变量,同样查找失败*/

if(a[cen]key)

max=cen;

else

min=cen;

}

return

-1;

}

void

main(){/*主程序只是为了证明两个函数的可行性,可以自己编写*/

int

a[]={14,10,25,36,87,95,10,12,13,8},i;

sort(a,10);

i=find(a,10,11);

if(i!=-1)

printf(“be

found”);

else

printf(“no

found”);

getch();

}

用C语言写二分查找的代码!!!

推荐答案的 code 有问题,并没有考虑到若待查数的下标是 0 怎么办?所以若顺序表中不存在待查元素 应该 return -1

加上主函数的最后两行调用两次查找函数很多余,代码显得不够简练。

建议改成:

#include stdio.h

#include stdlib.h

int Search(int *a, int key)

{

    // 在顺序表中折半查找 key的数据元素。若找到,则函数值为

    int low = 0, mid; // 该元素的数组下标;否则为0。

    int high = 14;

    while (low = high)

    {

        mid = (low + high) / 2;

        if (key == a[mid])

            return mid; // 找到待查元素

        else if (key  a[mid])

            high = mid – 1; // 继续在前半区间进行查找

        else

            low = mid + 1; // 继续在后半区间进行查找

    }

    return -1; // 顺序表中不存在待查元素

}

void main()

{

    int *a, key, i;

    int b[15] = {0};

    a = b;

    printf(“请自小到大输入15个整数:\n”);

    for (i = 1; i = 15; i++)

    {

        scanf(“%d”, b[i – 1]);

        printf(“\n”);

    }

    printf(“请输入你要查找的数:\n”);

    scanf(“%d”, key);

    i = Search(a, key);

    if (-1 == i)

        printf(“你要查找的数不在目标数组中!\n”);

    else

        printf(“你要查找的数的数组下标为 %d \n”, i);

}

c语言如何实现二分查找,问题描述看图,我的源代码如下:

#include stdio.h

int numbers[1000001]; //全局变量,数组numbers太大,必须放在这里定义

int Bsearch(int numbers[], int left, int right, int k);

int main()

{

    int i, j, k, m, n;

    //数组numbers太大,不能放在main函数里,而要放在函数外定义,

    //不然的话,会导致函数堆栈溢出.

    //原代码int numbers[1000001];

    // 反复读入数字和查找数字的数量

    while (scanf(“%d %d”, n, k) != EOF)

    {

        // 读入给定的数字

        for (i = 0; i  n; i++)

        {

            scanf(“%d”, numbers[i]);

        }

        for (j = 0; j  k; j++)

        {

            // 读入待查找的数字,

            scanf(“%d”, m);

            // 请在下面完成查找读入数字的功能

            int ret;

            ret = Bsearch(numbers, 0, n – 1, m);

            printf(“%d”, ret);

            if (j != k – 1)

            {

                printf(” “);

            }

        }

        printf(“\n”);

    }

    return 0;

}

int Bsearch(int numbers[], int left, int right, int m)

{

    int mid;

    while (left = right) //原代码while (left  right)

    {

        mid = (left + right) / 2;

        if (numbers[mid] == m)

        {

            return mid + 1;

        }

        else if (numbers[mid]  m)

        {

            right = mid -1;

        }

        else

        {

            left = mid + 1;

        }

    }

    return 0;

}

C语言二分查找

if(key==a[mid]) return mid; 这句就是罪魁祸首。呵呵你是想用return来结束while循环吧。用错了。

找到结果后,你应该是把结果输出出来,而不是用return。return语句是返回整个函数的,在你的程序里main函数就结束了,你当然看不到任何结果了。

改为:

if(key==a[mid]) break; *这行是结束while循环的。而不是你所用的return*/

}

c语言实验报告的二分法查找,跪求各位高手帮助

#include”stdio.h”

#define N 10

int find(int a[],int x)

{

int p,h,t;

p=-1;

h=0,t=N-1;

while(h=t)

if(a[(h+t)/2]x) h=(h+t)/2;

else if(a[(h+t)/2]x) t=(h+t)/2;

else {p=(h+t)/2;break;}

return p;

}

main()

{

int p,m,a[N]={1,3,4,8,9,11,13,17,18,20};

scanf(“%d”,m);

p=find(a,m);

if(p==-1) printf(“\nno!”);

else printf(“\nYES! %d”,p);

}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/288563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-24 02:59
下一篇 2024-12-24 03:00

相关推荐

  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python字符串宽度不限制怎么打代码

    本文将为大家详细介绍Python字符串宽度不限制时如何打代码的几个方面。 一、保持代码风格的统一 在Python字符串宽度不限制的情况下,我们可以写出很长很长的一行代码。但是,为了…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python基础代码用法介绍

    本文将从多个方面对Python基础代码进行解析和详细阐述,力求让读者深刻理解Python基础代码。通过本文的学习,相信大家对Python的学习和应用会更加轻松和高效。 一、变量和数…

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • 仓库管理系统代码设计Python

    这篇文章将详细探讨如何设计一个基于Python的仓库管理系统。 一、基本需求 在着手设计之前,我们首先需要确定仓库管理系统的基本需求。 我们可以将需求分为以下几个方面: 1、库存管…

    编程 2025-04-29

发表回复

登录后才能评论