二分法算法

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            int[] iArray = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
            for (int i = 0; i < iArray.Length; i++)
                Console.Write(iArray[i] + ",");
            Console.WriteLine("请输入您要查找的数字:");
            int ikey = Convert.ToInt32(Console.ReadLine());
            Program bs = new Program();
            int iResult = bs.iBinarySearch(ikey, iArray);
            Console.WriteLine(iResult);
            Console.ReadLine();
            return;
        }

        public int iBinarySearch(int key, int[] iArray)
        {
            int iLeft = 0;
            int iRight = iArray.Length - 1;
            while (iLeft <= iRight)
            {
                int iMiddle = (iLeft + iRight) / 2;
                if (key == iArray[iMiddle])
                    return iMiddle;
                else if (key > iArray[iMiddle])
                    iLeft = iMiddle + 1;
                else
                    iRight = iMiddle - 1;
            }
            return -1;
        }
    }
}

  

时间: 2024-10-10 16:59:19

二分法算法的相关文章

LBS地理位置距离计算方法之geohash算法

随着移动终端的普及,很多应用都基于LBS功能,附近的某某(餐馆.银行.妹纸等等).基础数据中,一般保存了目标位置的经纬度:利用用户提供的经纬度,进行对比,从而获得是否在附近.这里需要在设置出一个字段,是关于编码的字段,一会看下文哈…… 地理位置距离实现目标:查找附近多少公里内的人或者商家 比如:微信.陌陌.美团.基于O2O的一些APP这些应用或者移动网页都需要用到地理位置计算 目前来说:移动地理位置距离计算比较好的算法是geohash,特此整理分享. geohash有以下几个特点: 第一:geo

LeetCode总结,二分法一般性总结

一,学习别人的总结与讲解 本部分的参考见末尾,本部分文字是在其基础上的二度总结(节约时间和精力). 1,典型的二分法 算法:当数据量很大适宜采用该方法.采用二分法查找时,数据需是排好序的. 基本思想:假设数据是按升序排序的,对于给定值key,从序列的中间位置k开始比较, 如果当前位置arr[k]值等于key,则查找成功: 若key小于当前位置值arr[k],则在数列的前半段中查找,arr[low,mid-1]: 若key大于当前位置值arr[k],则在数列的后半段中继续查找arr[mid+1,h

【实践报告】算法第二章实践报告

实践报告任选一题进行分析. 1.实践题目: 7-1 二分查找 输入n值(1<=n<=1000).n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数.若x不存在,输出-1和比较次数. 输入格式:输入共三行: 第一行是n值: 第二行是n个整数: 第三行是x值. 输出格式:输出x所在的下标(0~n-1)及比较次数.若x不存在,输出-1和比较次数. 2.问题描述: 输入n值(1<=n<=1000).n个非降序排列的整数以及要查找的数x,使

二分法思想体会和结队编程感想

1.二分法思想 二分法在编程中是一种十分重要的算法,其主要思想是将问题区间不断的折半进而能更快的寻找到目标,二分法能将数据较大的问题规模很好地缩小. 使用条件:数组中的元素有序            时间复杂度:O(log2n) 二分法算法: int BIN(int a[], int key, int n) { int left = 0; int right = n - 1; while (left <= right) { int middle = (left + right) / 2; if

算法之二分法和三元表达式

算法之二分法 # 算法:解决问题的高效率方法 # 二分法:容器类型里面的数据必须要有大小顺序 l = [1,2,3,4,5,6,7,8,9,11,22,333,444,55555,666666,999999999999999] def func(l,num): if l == []: print('不在这里面') return length = len(l) middle = length // 2 if num > l[middle]: func(l[middle+1:],num) elif

Python学习————二分法及匿名函数

一.二分法 算法:是高效解决问题的办法 算法之二分法 需求:有一个按照从小到大顺序排列的数字列表 需要从该数字列表中找到我们想要的那个一个数字 如何做更高效??? nums=[-3,4,7,10,13,21,43,77,89] find_num=10 nums=[-3,4,13,10,-2,7,89] nums.sort() print(nums) 方案一:整体遍历效率太低 or num in nums: if num == find_num: print('find it') break 方案

acm学习报告

前言: "紧张刺激"的大一下学期马上就要结束了!从最初接触C++到现在也已经快要有1年的时间了.在大一上学期,c++课上学的基础知识大部分都是属于c语言的,为了熟练掌握这些基础知识,费老让我们做了很多的练习题.其实,我觉得,这些练习题也可以算是acm的范畴,只不过这些题实在是简单到不能再简单了.到了这一学期,或是说在寒假里,我才真正的知道了ACM题是有多么的困难!!说实话,在上学期做题做的挺轻松地,那是也觉得acm再难还能难倒那里去,于是我就跟随着远飞的脚步,没有犹豫的选修了ACM程序

第五篇:python基础_5

本篇内容 协程函数 递归 二分法 import语句 from...import语句 模块搜索路径 包的导入 软件开发规范 logging模块的使用 一. 协程函数 1.定义 协程函数就是使用了yield表达式形式的生成器. #!/usr/binl/env python #encoding: utf-8 #author: YangLei def eater(name): print("%s eat food" %name) while True: food = yield g = eat

按照这个路线,让你4个月学会Hadoop开发

学习hadoop,首先我们要知道hadoop是什么? 说到底Hadoop只是一项分布式系统的工具,我们在学习的时候要理解分布式系统设计中的原则以及方法,只有这样才能以不变应万变.再一个就是一定要动手,有什么案例,有什么项目一定要亲自动手去敲. 学习的时候不要害怕遇到问题,问题是最好的老师.其实学习的过程就是逐渐解决问题的过程,当你遇到的问题越来越少的时候,就说明已经学的差不多了. 下面说一下hadoop的学习路线. 1.我们要掌握Linux的安装及基本操作.Python安装及编程基础.java基