Binary search

Binary search

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

Binary Search


Jon Bentley以前说过类似的话:“90%的程序猿无法正确实现二分查找算法



就冲着这句话去写binary search


binary_search 的算法实现部分

/*********************************************************
code writer	:	EOF
code file	:	binary_search.c
code date	:	2014.9.18
e-mail		:	jasonleaster@gmail.com

description:
	You may have to KNOW that the @array was
sequenced from min to max  when you use "binary search".

	If this function find the element , return the
location in the @array, otherwise return -1.

********************************************************/
#include <stdio.h>

int binary_search(int* array,int size,int element)
{
	if(!array)
	{
		printf("You passed NULL into function: %s()\n",__FUNCTION__);
		return -1;
	}

	int low = 0;
	int mid = 0;
	int high= 0;

	for(low = 0,high = size-1;low <= high;)
	{
		mid = (low+high)/2;
		
		if(array[mid] < element)
		{
			low = mid+1;
		}
		else if(array[mid] > element)
		{
			high = mid-1;
		}
		else
		{
			/*
			** 	found that.
			*/
			return mid; 
		}
	}

	return -1;
}


測试用程序

#include <stdio.h>
#include "binary_search.h"

int main()
{
	int number[10] = {0,2,6,8,10,15,18,40,99};

	int what_i_want = 18;
	int ret = 0;

	ret = binary_search(number,sizeof(number)/sizeof(number[0]),what_i_want);

	if(ret < 0)
	{
		printf("Not found!\n");
		return 0;
	}

	printf("location:%d number[%d]:%d\n",ret,ret,number[ret]);

	return 0;
}


Binary search



update:2015.1.8

加入python版本号的实现

'''
Code writer : EOF
Code date   : 2015.01.08
Code file   : bs.py
e-mail      : jasonleaster@gmail.com

Code description:
       Here is a implementation for 
how to do binary search in Python.

'''
def binary_search(array, element):

    high = len(array)
    mid = -1
    for low in range(len(array)) :
        mid = (low + high)/2

        if array[mid] < element :
             low  = mid + 1
        elif array[mid] > element :
             high = mid - 1
        else :
             return mid

    return -1
     
def main():
    number = [1,2,3,4,5]

    print number
    print number[binary_search(number,3)]

main()

Binary search





Binary search



版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117659.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 学习笔记 | 非负矩阵分解(NMF)浅析

    学习笔记 | 非负矩阵分解(NMF)浅析这篇博客简单地介绍非负矩阵分解(NMF),包括背景说明、NMF原理简介、代码分享以及NMF在一个趣味问题中的解决方案。

    2022年6月26日
    30
  • JS查找数组中是否包含某个元素或对象「建议收藏」

    JS查找数组中是否包含某个元素或对象「建议收藏」做业务需求时遇到一个功能模块需要动态增删数组对象,需求本身完成不难,但是写出来的代码我总感觉很冗余,于是我在网上找了很久,看有没有现成的轮子可以使用,最终找到了es6中的一个方法将其记录在此,方便以后自己翻阅查找对数组元素进行增删//e是你要判断是否在这个数组里的元素letarr=[‘1′,’2′,’3′,’4’]letarrIndex=arr.indexOf(e)i…

    2022年10月18日
    0
  • cocos2dx 编写shader 遇到 溢出问题[通俗易懂]

    cocos2dx 编写shader 遇到 溢出问题

    2022年1月30日
    53
  • Spring Boot—(11)SpringBoot使用Junit单元测试

    Spring Boot—(11)SpringBoot使用Junit单元测试欢迎关注公众号:java4all摘要:本文详细的记录了SpringBoot如何结合Junit写测试用例,如何执行,打包执行,忽略执行等操作,SpringBoot内置了Junit测试组件,使用很方便,不用再单独引入其他测试组件。演示环境:SpringBoot+mybatis开发工具:IntelliJIDEA1.pom.xml一般使用idea新建一个Sp…

    2022年6月9日
    34
  • PyPDF2 | 利用 Python 实现 PDF 分割

    PyPDF2 | 利用 Python 实现 PDF 分割1.PDF分割由于疫情影响被迫在家上网课,因此教材也只能用电子版。但有一门教材是对开的扫描版,导致在iPad上阅读很不友好,因此决定寻找一个工具将PDF对半分开。图1分割前的PDF在百度了一番后,发现大多都是使用AdobeAcrobat软件进行剪裁,这完全不Pythonic,因此又找了用Python处理PDF文件的方法,最后发现了PyPDF2这个库,本…

    2022年6月23日
    42
  • 开发手机游戏的一点心得(一)

    开发手机游戏的一点心得(一)作者:风过回廊文章来源:http://www.sf.org.cn2003年三月份,我刚开始接触了手机游戏的开发。开发手机上的游戏程序,最初仅仅只是出于兴趣爱好,利用业余时间自己陆陆续续的也写了一些Code,得到了一些经验,本来是想敝帚自珍的,但是朋友的鼓励,使我决定把自己的一点点心得体会写出来,藉以告慰我在学习中所阵亡的千千万万脑细胞,也为和我一样在黑暗的艰难摸索人们中提供一些微不足道的帮助吧

    2022年4月30日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号