C语言:编写折半查找函数,即二分法

原创 2016年05月30日 17:12:37
#include<stdio.h>
#include<stdlib.h>

int Binary(int arr[],int size,int x)
{
    int left = 0;
    int right = size - 1;
    int mid = left - (left - right) / 2;  //防止溢出!!!int mid =( left - right )/2 好。
    
    while (left <= right)
    {
        if (x > arr[mid])
        {
            mid++;
            right--;
        }
        
        else if (x < arr[mid])
        {
            mid--;
            left++;
        }
        
        else
        {
            return mid;
        }
    }
    return -1;
}


int main()
{
    int arr[] = { 2, 5, 6, 7, 9, 14, 18, 20 };
    int len = sizeof(arr) / sizeof(arr[0]);
    int num = 0;
    scanf("%d", &num);  //输入要查找的数num
    int ret = Binary(arr, len,num);
    if (ret == -1)
    {
        printf("not exist!");
    }
    else
    {
        printf("exist!下标为:\n");
        printf("%d", ret);
    }
    system("pause");
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

用c语言编写折半查找法

折半查找法又称为二分查找,是在一个有序数组里面找到一个具体的数,方法我在代码里注释到了。 #include int binary_search(int *arr, int key, int sz...

折半查找用简单的C语言编写

代码如下:#include void search(int arr[],int left,int right,int num) { int mid=0; while(left>1); i...

黑马程序员——c语言基础:冒泡排序、选择排序和折半查找

1.冒泡排序 冒泡排序是一种简单的排序算法,分为大数下沉和小数上浮两种。 冒泡排序步骤(大数下沉): 1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2)对每一对相邻元素作同样的工...

C语言简单实现折半查找法

近期研习C语言,谭浩强《C语言程序设计(第2版)》P167.6原题:     有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中...

OutMan——C语言中的冒泡排序、选择排序、折半查找以及指针的介绍

冒泡排序 选择排序 折半查找 折半插入 指针的介绍

黑马程序员_C语言基础_数组之冒泡排序、快速选择排序、折半查找

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------       学习一维数组和二维数组的差别不大,学习方法可以通用,在学习过程中可以比较学习,找出...

Linux洗C语言基础编程——折半查找法

今天我们写一个选择法排序与折半查找法相结合的程序。主要实现先排序在查找。前面我们已经详细的讲过了选择排序法,现在我们来说下折半查找法 折半查找法的主要思想是 number与mid的比较      ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)