C语言:编写折半查找函数

原创 2016年05月30日 17:13:20

思路:

先把中间元素找到,寻找的元素在中间元素左边,则小于中间元素,改变right。再继续折半找中间元素寻找。



#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int Binary(int x, int arr[], int left, int right)
{
    int mid = 0;
    while (left <= right)
    {
        int mid = left - (left - right) / 2;
        if (x > arr[mid])
        {
            left = mid + 1;
        }
        else if (x < arr[mid])
        {
            right = mid - 1;
        }
        else
        {
            return mid;
        }
    }
    return -1;
}


int main()
{
    
    int arr[] = { 1, 3, 4, 6, 7, 8, 56, 67, 78 };
    int size = sizeof(arr) / sizeof(arr[0]);
    int ret = Binary(78, arr, 0, size - 1);

    if (ret == -1)
    {
        printf("not exsit");
    }
    else
    {
        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个字)