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

建材网站的模板平台开发是做什么的

建材网站的模板,平台开发是做什么的,Python做网站难不难,杭州网站建设设计公司有单调性的数列一定可以使用二分#xff0c;没有单调性的题目也可能可以使用二分#xff1b; #xff08;一#xff09;整数二分 二分的本质#xff1a; 在某个整数区间内#xff0c;存在某种性质使得区间内左半边的数都不满足该性质#xff1b;而右半边的数都满足该性… 有单调性的数列一定可以使用二分没有单调性的题目也可能可以使用二分 一整数二分 二分的本质 在某个整数区间内存在某种性质使得区间内左半边的数都不满足该性质而右半边的数都满足该性质那么二分的作用就是找到左右这两个分界点 1.找满足红色性质的边界点如图上 如果是让l等于mid即找左半边的分界点则要记得mid (lr1)/2 2.找满足绿色性质的边界点如图上 如果是让r等于mid即找右半边的分界点则mid (lr)/2不用另外加1 情况1为什么额外加1 答因为在程序中(lr)/2是向下取整当遇到遇到rl1l和r只相差1数组只有两个元素的情况(lr)/2就等于l这时候mid(lr)/2就是midl如下图所示这次循环相当于没有变化再次循环也不会有变化进入死循环 基本思想不断缩小答案区间当区间长度为一时就是答案 时间复杂度平均O(logn)  步骤 先写出基本模板:mid (lr)/2 定义判断条件check()函数 看应该是让lmid还是rmid如果应该lmid则把前面的mid改为 mid(lr1)/2 模板 // 检查x是否满足某种性质 private static boolean check(int x) { /* ... */ } // 区间[left, right]被划分成[left, mid]和[mid 1, right]时使用 // 或者称之为左二分查询查找左侧第一个满足条件的数 private static int leftBinarySearch(int[] arr, int left, int right) { while (left right) { int mid arr[left right 1]; if (check(mid)) { right mid; // check()判断mid是否满足性质 } else { left mid 1; } } return left; } // 区间[left, right]被划分成[left, mid - 1]和[mid, right]时使用 // 或者称之为右二分查询查找右侧最后一个满足条件的数 private static int rightBinarySearch(int[] arr, int left, int right) { while (left right) { int mid arr[left right 1 1]; if (check(mid)) { left mid; // check()判断mid是否满足性质 } else { right mid - 1; // 有加必有减} } return left; } 二浮点数二分 典型问题求一个数的平方根 基本思想不断缩小答案区间当区间长度足够小时即左右边界之差足够小边界的值就约等于答案 时间复杂度平均O(logn)  步骤 mid就等于(rl)/2; while循环判定条件为r-l1e-8左右边界之差足够小时结束循环 模板 // 检查x是否满足某种性质 private static boolean check(int x) { /* ... */ } // 区间[left, right]被划分成[left, mid]和[mid 1, right]时使用 // 或者称之为左二分查询查找左侧第一个满足条件的数 private static int leftBinarySearch(int[] arr, int left, int right) { while (left right) { int mid arr[left right 1]; if (check(mid)) { right mid; // check()判断mid是否满足性质 } else { left mid 1; } } return left; } // 区间[left, right]被划分成[left, mid - 1]和[mid, right]时使用 // 或者称之为右二分查询查找右侧最后一个满足条件的数 private static int rightBinarySearch(int[] arr, int left, int right) { while (left right) { int mid arr[left right 1 1]; if (check(mid)) { left mid; // check()判断mid是否满足性质 } else { right mid - 1; // 有加必有减} } return left; }注意点 使用二分一定可以找到一个满足条件的边界点不会出现无解的情况 整数二分中l和r表示的是区间左右边界的数组下标当遍历结束后lrarr[r] 就是所找的边界点 浮点数二分中l和r表示的不是数组下标而是左右边界本身 时间复杂度分析 二分查找Binary Search的时间复杂度分析如下 1. 最好情况Best Case 如果目标元素正好是数组的中间元素那么只需一次比较就能找到时间复杂度为 O(1)O(1) 2. 最坏情况Worst Case 每次查找都会将搜索范围缩小一半假设数组长度为 nn那么最多需要查找的次数是 T(n)T(n/2)O(1)T(n) T(n/2) O(1) 展开递归 T(n)T(n/4)O(1)O(1)T(n/8)O(1)O(1)O(1)…T(n) T(n/4) O(1) O(1) T(n/8) O(1) O(1) O(1) \dots 直到搜索范围缩小到 1即 n/2k1n/2^k 1解得 klog⁡2nk \log_2 n 因此最坏情况下的时间复杂度是 O(log⁡n)O(\log n) 3. 平均情况Average Case 在没有额外信息的情况下平均情况下也需要进行大约 O(log⁡n) 级别的比较因此平均时间复杂度也是 O(log⁡n) 总结 情况时间复杂度最好情况O(1)O(1)最坏情况O(log⁡n)O(\log n)平均情况O(log⁡n)O(\log n) 二分查找的时间复杂度远优于线性查找O(n)但前提是数据必须是有序的否则需要先进行排序如快速排序 O(nlog⁡n)这会影响整体效率。
http://www.dnsts.com.cn/news/135898.html

相关文章:

  • 连接外国的网站吗网站建设 dw 时间轴
  • 落地页模板网站网站建设营销推广工作
  • 附近网站建设太平保宝app免费下载二维码
  • 营销类网站有哪些网站小图标怎么做的
  • 做网站哪个平台好上海外企公司有哪些
  • 设计网站pc版移动网站做微信小程序
  • 网站如何做留言板淘宝上的网站建设能信吗
  • 内蒙网站设计公司保定有哪些做网站的地方
  • 女人网上量体做衣网站北京建网站公司飞沐
  • 农业信息网站 建设校园二手物品交易网站怎么做
  • 贵阳网站建设建站系统网站排名搜索
  • 网站建设下一步工作计划公司设计网站需要注意哪些
  • 提高整个网站权重图片网站 建站
  • 专业做网站的公司 郑州域名转发网站
  • 加盟餐饮的网站建设做网站需要公司备案
  • 做购物网站哪家公司好knowall wordpress
  • 小视频网站建设怎样做一个单页面网站
  • 报电子商务(网站建设与运营)正规电商运营培训班
  • 电子商务网站建设论文骨干专业群建设任务书网站
  • 网站dns解析设置抖音电商培训
  • 国外 电商网站wordpress 每页文章数
  • 网络规划设计师难考吗长沙优化网站分析
  • iis 无法启动此网站做一个网站维护多少钱
  • 企业做网站的公司有哪些如何判断一个网站的价值
  • 欧美在线做视频网站专建网站
  • 西安网站建设创意提高工作效率的方法
  • 长沙品牌网站建设江西九江网站建设
  • 南昌做网站建设公司上海网络推广培训机构
  • 增塑剂网站建设做阿里国际网站要收费吗
  • 榆林市住房和城市建设局网站wordpress thecorporationtheme