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;}}
转载于:https://www.cnblogs.com/xiaoai123/p/7057559.html
C#二分查找法 破洞百出版本相关推荐
- (java)leetcode852 山脉数组的封顶索引(二分查找法找出数组中最大值的下标)(Peak Index in a Mountain Array)
题目描述: 我们把符合下列属性的数组 A 称作山脉: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... ...
- javascript数据结构与算法---检索算法(二分查找法、计算重复次数)
javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){if (a ...
- 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 二分查找法
1 package com.hanqi; 2 3 import java.util.*; 4 5 public class Test5 { 6 7 public static void main(St ...
- java算法2_二分查找法
比如现在有个记录名单的字典,里面的名字是按A-Z的顺序排好的,现在我想找Lily这个人.我可以从第一页开始一页一页的翻,但显然这样效率太低了.我可以怎么做呢?首先我直接翻到字典的中间位置,假如发现这里 ...
- 7-60 二分查找法之过程 (10 分)
7-60 二分查找法之过程 (10 分) 本题要求使用二分查找法,在给定的n个升序排列的整数中查找x,并输出查找过程中每一步的中间结果.如果数组a中的元素与x的值相同,输出相应的下标(下标从0开始): ...
- 算法(一):二分查找法
算法基础: 一.大O表示法: 指示算法的速度有多快,用于指出随数量的增大,算法的所需步骤增加的速度,常见的大O运行时间(时间复杂度): O(1)表示常数阶时间复杂度 O(log n),也叫对数时间复杂 ...
- c语言 二分查找法 及二分查找法的时间复杂度。
二分查找法是用来查找数组中指定的那个元素.使用二分查找的前提是数组是有序的.(这里我们假设是升序) 在现实生活中,我们要猜一个区间内的数字,比如1~10之间,我们通常会猜它的中间数5,再根据要猜的数和 ...
- 二分查找法及二分搜索树及其C++实现
二分查找法及二分搜索树及其C++实现 二分查找法 二分查找简介 二分查找的实现 二分搜索树 二分搜索树简介 二分搜索树的实现 二分查找法 二分查找简介 二分查找是一种在每次比较之后将查找空间一分为二的 ...
最新文章
- 电厂运维的cis数据_变配电智能化运维作用和优点,智慧供配电物联网
- Tcl学习之--表达式
- python469教程_从入门到精通真不难:Python最佳学习路线(视频学习教程)分享
- python 安卓应用层_Android应用层源码阅读笔记--Application
- vb mysql 教程_VB6 数据库 基础 教程
- 100个Python实战项目(十二)Python 并发图像下载器
- typora插入文件到服务器,写作神器Typora入门指南
- 对称密码(共享秘钥密码)
- Android进阶知识(五):IPC基本概念之Binder、Binder工作机制及其原理
- python画菱形的代码_python绘制菱形
- MapReduce作业提交流程
- 通过几道CTF题学习yii2框架
- 数组取出使用某一个entiti
- 大阳能充电新技术---Powerfoyle
- python 取数组最后一个,如何获取数组中的最后一个键?
- 3D角色 毛发制作 XGen关于导向的基本操作
- VMware vsphere和VMware vsphere Hypervisor有什么不同
- ndk开发(二)JNI、java互调
- 查询数据库中的重复数据记录
- 滴水逆向作业——指针04