C#二分查找法 破洞百出版本
二分查找法在数据繁多的数据中查找是一种快速的方法,每次查找最多需要的次数
为2的n次方小于总个数。
当然是有前提的,就是需要把数据先排好序,这里指的都是数值型的数据。
基本思想就是把需要找的值与排序好数组的中间值比较,这里的中间值不是指大小,而是指顺序,
如果比中间值大,则就把前面的部分去掉,接下来只与后面剩余的部分比较,
如果比中间值小,则就把后面的部分去掉,接下来只与前面剩余的部分比较。
如何反复比较,这样就能快速找到所需要的值。这也是最多需要寻找次数的依据。
所以这也涉及到递归的使用。
下面是非常简单的例子,还有很多的bug,主要是表达一个思路,例子主要是用来找出指定值的索引。
            int[] a = { 1, 6, 3, 55, 77, 46, 67, 7, 98, 87, 88 };
            Array.Sort<int>(a);
            for (int i = 0; i < a.Length; i++)
            {
                textBox1.AppendText(a[i].ToString()+" ");
            }
          MessageBox.Show(getIndex(a, 0, a.Length, 46).ToString());
        private int getIndex(int[] a,int start,int end,int num)
        {
            if (a[(start + end) / 2] < num)
            {
              return  getIndex(a, start, (start + end) / 2, num);
            }
            else if (a[(start + end) / 2] < num)
            {
            return    getIndex(a, (start + end) / 2, end, num);
            }
            else
            {
            return (start+end)/2;
            }
        }
C#二分查找法 破洞百出版本的更多相关文章
- 【C/C++学院】0723-32位与64位/调戏窗体程序/数据分离算法/内存检索/二分查找法/myVC
		
[送给在路上的程序猿] 对于一个开发人员而言,能够胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够运用到系统中,由此简化系统的开发,是其架构生涯的第一步. ...
 - java  for循环和数组--冒泡排序、二分查找法
		
//100以内与7相关的数 for(int a=1;a<=100;a++){ if(a%7==0||a%10==7||a/10==7){ System.out.print(a+ ...
 - 学习练习 java 二分查找法
		
package com.hanqi; import java.util.*; public class Test5 { public static void main(String[] args) { ...
 - 选择、冒泡排序,二分查找法以及一些for循环的灵活运用
		
import java.util.Arrays;//冒泡排序 public class Test { public static void main(String[] args) { int[] ar ...
 - python 全栈开发,Day15(递归函数,二分查找法)
		
一.递归函数 江湖上流传这这样一句话叫做:人理解循环,神理解递归.所以你可别小看了递归函数,很多人被拦在大神的门槛外这么多年,就是因为没能领悟递归的真谛. 递归函数:在一个函数里执行再调用这个函数本身 ...
 - javascript数据结构与算法---检索算法(二分查找法、计算重复次数)
		
javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){ if ( ...
 - 面试官,我会写二分查找法!对,没有 bug 的那种!
		
前言科普 第一篇二分搜索论文是 1946 年发表,然而第一个没有 bug 的二分查找法却是在 1962 年才出现,中间用了 16 年的时间. 2019 年的你,在面试的过程中能手写出没有 bug 的二 ...
 - jvascript 顺序查找和二分查找法
		
第一种:顺序查找法 中心思想:和数组中的值逐个比对! /* * 参数说明: * array:传入数组 * findVal:传入需要查找的数 */ function Orderseach(array,f ...
 - 用c语言编写二分查找法
		
二分法的适用范围为有序数列,这方面很有局限性. #include<stdio.h> //二分查找法 void binary_search(int a[],int start,int mid ...
 
随机推荐
- BZOJ 2783 树 - 树上倍增 + 二分
			
传送门 分析: 对每个点都进行一次二分:将该点作为链的底端,二分链顶端所在的深度,然后倍增找到此点,通过前缀和相减求出链的权值,并更新l,r. code #include<bits/stdc++ ...
 - 解决离线Could not parse configuration:hibernate.cfg.xml错误
			
离线使用hibernate tool 生成反向工程,在配置 配置文件完,生成配置文件后,会报出org.hibernate.HibernateException: Could not parse con ...
 - Oracle数据库零散知识07 -- Materialized view(转)
			
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询.这样对整体 ...
 - HDU 1244 Max Sum Plus Plus Plus - dp
			
传送门 题目大意: 给一个序列,要求将序列分成m段,从左至右每一段分别长l1,l2,...lm,求最大的和是多少. 题目分析: 和最大m段子段和相似,先枚举\(i \in [1,m]\),然后$j \ ...
 - 【codeforces 782C】Andryusha and Colored Balloons
			
[题目链接]:http://codeforces.com/contest/782/problem/C [题意] 给你一棵树 让你满足要求 ->任意相连的3个节点的颜色不能相同 的情况下进行染色 ...
 - POJ 2418-Hardwood Species(map)
			
Hardwood Species Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 18770 Accepted: 740 ...
 - 语言的学习 —— 西班牙语(español)
			
联合国六大官方语言:英语.法语.俄语.汉语.西班牙语.阿拉伯语: 在七大洲中,主要是在拉丁美洲国家中(巴西.伯利兹.法属圭亚那.海地等地除外).很多说西班牙语的人把他们的语言称为西班牙语(españo ...
 - HDU 3605Escape(缩点+网络流之最大流)
			
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3605 本来打算昨天写两道题的,结果这个题卡住了,最后才发现是最后的推断条件出错了,推断满流的条件应该是 ...
 - Sql 将多个表查询的结果进行再次查询
			
把你目前查到结果集定义为一个临时表 tempTable 下面是如何查 SELECT * FROM tempTable where 关键字=‘’举例 select book_num,book_name, ...
 - [Example of Sklearn] -  SVM usge
			
reference : http://www.csdn.net/article/2012-12-28/2813275-Support-Vector-Machine SVM是什么? SVM是一种训练机器 ...