当前位置: 首页 > news >正文

做ppt用什么网站好个人博客系统wordpress

做ppt用什么网站好,个人博客系统wordpress,网站排名如何做,做网站有底薪吗目录 前言无处不在的二分思想O(logn) 惊人的查找速度二分查找的递归与非递归实现二分查找应用场景的局限性解答开篇内容小结 前言 本节课程思维导图#xff1a; 今天我们讲一种针对有序数据集合的查找算法#xff1a;二分查找#xff08;Binary Search#xff09;算法 今天我们讲一种针对有序数据集合的查找算法二分查找Binary Search算法也叫折半查找算法。 抛出问题假设我们有 1000 万个整数数据每个数据占 8 个字节如何设计数据结构和算法快速判断某个整数是否出现在这 1000 万数据中 无处不在的二分思想 比如说我们现在来做一个猜字游戏。我随机写一个 0 到 99 之间的数字然后你来猜我写的是什么。猜的过程中你每猜一次我就会告诉你猜的大了还是小了直到猜中为止。你来想想如何快速猜中我写的数字呢 假设我写的数字是 23你可以按照下面的步骤来试一试。如果猜测范围的数字有偶数个中间数有两个就选择较小的那个。 次就猜出来了是不是很快这个例子用的就是二分思想。二分查找针对的是一个有序的数据集合查找思想有点类似分治思想。每次都通过跟区间的中间元素对比将待查找的区间缩小为之前的一半直到找到要查找的元素或者区间被缩小为 0。 O(logn) 惊人的查找速度 我们来分析一下它的时间复杂度。我们假设数据大小是 n每次查找后数据都会缩小为原来的一半也就是会除以 2。最坏情况下直到查找区间被缩小为空才停止。 可以看出来这是一个等比数列。其中 n/2k1 时k 的值就是总共缩小的次数。而每一次缩小操作只涉及两个数据的大小比较所以经过了 k 次区间缩小操作时间复杂度就是 O(k)。通过 n/2k1我们可以求得 klog2n所以时间复杂度就是 O(logn)。二分查找是我们目前为止遇到的第一个时间复杂度为 O(logn) 的算法。 二分查找的递归与非递归实现 最简单的情况就是有序数组中不存在重复元素我们在其中用二分查找值等于给定值的数据。我用 Java 代码实现了一个最简单的二分查找算法。 public int bsearch(int[] a, int n, int value) {int low 0;int high n - 1;while (low high) {int mid (low high) / 2;if (a[mid] value) {return mid;} else if (a[mid] value) {low mid 1;} else {high mid - 1;}}return -1; }low、high、mid 都是指数组下标其中 low 和 high 表示当前查找的区间范围初始 low0 highn-1。mid 表示[low, high]的中间位置。我们通过对比 a[mid]与 value 的大小来更新接下来要查找的区间范围直到找到或者区间缩小为 0就退出。 注意 循环退出条件注意是 lowhigh而不是 low highmid 的取值,改进的方法是将 mid 的计算方式写成 low(high-low)/2;low 和 high 的更新,lowmid1highmid-1。 实际上二分查找除了用循环来实现还可以用递归来实现过程也非常简单。我用 Java 语言实现了一下这个过程正好你可以借此机会回顾一下写递归代码的技巧。 // 二分查找的递归实现 public int bsearch(int[] a, int n, int val) {return bsearchInternally(a, 0, n - 1, val); }private int bsearchInternally(int[] a, int low, int high, int value) {if (low high) return -1;int mid low ((high - low) 1);if (a[mid] value) {return mid;} else if (a[mid] value) {return bsearchInternally(a, mid1, high, value);} else {return bsearchInternally(a, low, mid-1, value);} }二分查找应用场景的局限性 首先二分查找依赖的是顺序表结构简单点说就是数组。二分查找只能用在数据是通过顺序表来存储的数据结构上。如果你的数据是通过其他数据结构存储的则无法应用二分查找。 其次二分查找针对的是有序数据。 再次数据量太小不适合二分查找。如果要处理的数据量很小完全没有必要用二分查找顺序遍历就足够了。 最后数据量太大也不适合二分查找。二分查找的底层需要依赖数组这种数据结构而数组为了支持随机访问的特性要求内存空间连续对内存的要求比较苛刻。 解答开篇 这个问题并不难。我们的内存限制是 100MB每个数据大小是 8 字节最简单的办法就是将数据存储在数组中内存占用差不多是 80MB符合内存的限制。借助今天讲的内容我们可以先对这 1000 万数据从小到大排序然后再利用二分查找算法就可以快速地查找想要的数据了。 内容小结 今天我们学习了一种针对有序数据的高效查找算法二分查找它的时间复杂度是 O(logn)。 二分查找的核心思想理解起来非常简单有点类似分治思想。即每次都通过跟区间中的中间元素对比将待查找的区间缩小为一半直到找到要查找的元素或者区间被缩小为 0。但是二分查找的代码实现比较容易写错。你需要着重掌握它的三个容易出错的地方循环退出条件、mid 的取值low 和 high 的更新。 二分查找虽然性能比较优秀但应用场景也比较有限。底层必须依赖数组并且还要求数据是有序的。对于较小规模的数据查找我们直接使用顺序遍历就可以了二分查找的优势并不明显。二分查找更适合处理静态数据也就是没有频繁的数据插入、删除操作。
http://www.zqtcl.cn/news/93874/

相关文章:

  • jsp做网站 案例网站模板 招聘
  • 德州建设银行兑换网站服务器网站跳转怎么做的
  • 金华专业做网站公司湖南网站建设服务
  • 企业网站设计沈阳苏宁电器网站建设特点分析
  • 建设工程类公司网站易语言可以做api网站对接吗
  • 青岛做网站皆赴青岛博wordpress 数据库 备份
  • 外贸公司网站空间哈尔滨seo优化专注
  • 建筑行业综合查询平台优化推广联盟
  • 北京管庄网站建设公司开平网站制作
  • 如何做销售直播网站最专业网站建设
  • 太原市住房和城乡建设局的网站首页网络推广服务外包公司
  • 湘icp备 网站建设 农业 湖南稿定设计免费版
  • 公司网站推广方法陕西省住房建设厅官网
  • 网站关键词排名突然没了无锡企业网站建设报价
  • 找做网站的人网站改版 301跳转
  • 网站备案一次就可以了吧营销管理培训课程
  • 怎么做网站背景专做民宿预定的网站
  • wordpress安装谷歌分析代码建网站seo
  • 百度外卖网站建设与维护方法建设 银行网网站
  • 小程序开发定制开发上海优化价格
  • 来宾住房和城乡建设局网站做外贸推广要做哪些平台
  • 无锡建设网站制作wordpress 知乎
  • 动漫网站源码免费怎么怎么做网站
  • 和两个黑人同时做网站中工互联网站建设
  • windows10PHP 网站建设app应用分发平台开发
  • 中唯建设工程有限公司网站做网站页面对PS切图
  • 个人网页制作成品欣赏seo网站沙盒期
  • 亚马逊站外推广网站怎么做制作营销网站模板免费下载
  • 加拿大网站后缀设计师互联网
  • 做物流的网站有哪些内容共同建设网站心得