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++实现 二分查找法 二分查找简介 二分查找的实现 二分搜索树 二分搜索树简介 二分搜索树的实现 二分查找法 二分查找简介 二分查找是一种在每次比较之后将查找空间一分为二的 ...
最新文章
- 珍惜当下、Relish the Moment
- Flutter快速入门 五步搞定Flutter环境配置
- haxm intel庐_Android Studio中Intel HAXM的那些坑
- MySQL 实用语句集合
- PAT 之 A+B和C
- 双引擎驱动Quick BI十亿数据0.3秒分析,首屏展示时间缩短30%
- python读取html中body_python批量获取html内body内容的实例
- es6 super 关键字
- 从gbdt到xgboost
- qt设置文本背景透明_QT QWidget设置窗体透明度方法汇总
- 《Ansible权威指南 》一1.6 Ansible应用场景
- python爬虫,以某小说网站为例
- amaze ui教程
- 易语言 火眼 哈勃 防分析源码
- Springboot+mybatis
- web 前端签名插件_手写签名插件—jSignature
- 台式机和台式计算机的区别,台式机和一体机区别是什么
- nbs***bsp;是牛客的bug吗
- Windows 10最新原版镜像(Version 21H1)
- 三分钟了解http和https
热门文章
- Redis 客户端:Jredis 和 spring-data-redis 整合
- 最小生成树和最短路径区别(详解表格)
- matlab画柱坐标系,[合集]有人知道怎样用matlab画柱坐标3维图 - 程序设计(Programming)版 - 北大未名BBS...
- 二进制颜色代码大全(含图)透明度与十六进制代码转换
- python和服务器共享文件夹,一行代码python实现文件共享服务器
- python邮件发送和图片
- 电脑免驱 乐得瑞LDR2001 USB转串口芯片方案介绍
- ZD Soft Screen Recorder 注册汉化版 【好用的屏幕录制软件】
- 温敏性N-异丙基丙烯酰胺(NIPA)和pH敏感性丙烯酸(AA)接枝纳米聚苯乙烯微球相关研究
- 什么是用户画像,用户画像的作用是什么?