阅读 101

二分法c语言程序代码(c语言调用函数格式 )

问题分析:

采用二分查找法查找特定关键字的元素。要求用户输入数组长度,也就是有序表的数据长度,并输入数组元素和查找的关键字。程序输出查找成功与否,以及成功时关键字在数组中的位置。例如,在有序表 10、13、17、 28、39、58、69、88、98、152 中查找关键字为88的元素。

算法描述:

(1)首先,从数组的中间元素开始查找,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。
(2)如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域去查找,然后重复步骤(1)的操作。
(3)如果某一步数组为空,则表示找不到目标元素

代码实现:

    #include 
    
void bubblingSort(int arr[], int n) {
    int i, j, temp;
    // 每次将一个元素送到末尾,n个元素,执行n次
    for (i = 0; i < n; ++i) {
        // 之前的循环已经将i个元素送到末尾,不需要再次比较,故减去,因为跟后一个元素比较,为了避免溢出,故减一
        for (j = 0; j < n - i - 1; ++j) {
            // 如果当前的元素比后一个元素小,就交换
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
	
    int binarySearch(int key,int a[],int n) //自定义函数binary_search()
    {
        int low,high,mid,count=0,count1=0;
        low=0;
        high=n-1;
        while(low<=high)    //査找范围不为0时执行循环体语句
        {
            count++;    //count记录査找次数
            mid=(low+high)/2;    //求中间位置
            if(keya[mid])    //key 大于中间值时
                low=mid+1;    //确定右子表范围
            else if(key==a[mid])    //当key等于中间值时,证明查找成功
            {
                printf("查找成功!n 查找 %d 次!a[%d]=%d",count,mid,key);    //输出査找次数及所査找元素在数组中的位置
                count1++;    //count1记录查找成功次数
                break;
            }
        }
        if(count1==0)    //判断是否查找失敗
            printf("查找失敗!");    //査找失敗
        return 0;
    }
    int main()
    {
        int i,key,arr[100],n;
        printf("请输入数组的长度:n");
        scanf("%d",&n);    //输入数组元素个数
        
        printf("请输入数组元素:n");
        for(i=0;i

运行结果:

我从事互联网行业几十年,主要的研究方向是大数据,人工智能,物联网领域,感兴趣的朋友可以关注我,也可以在评论区留言,大家一起交流和沟通。

文章分类
百科问答
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐