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

帮别人做网站规划怎样用word做网站

帮别人做网站规划,怎样用word做网站,科技设计网站有哪些,定制做网站设计文章目录 在有序数组中找num是否存在实现思路实现代码(里面运用了对数器)在有序数组中找num的最左位置实现思路代码实现 在有序数组中找num的最右位置实现思路实现代码 二分搜索不一定发生在有序数组上(比如寻找峰值问题)题目描述实现思路实现代码 在有序数组中找num是… 文章目录 在有序数组中找num是否存在实现思路实现代码(里面运用了对数器)在有序数组中找num的最左位置实现思路代码实现 在有序数组中找num的最右位置实现思路实现代码 二分搜索不一定发生在有序数组上(比如寻找峰值问题)题目描述实现思路实现代码 在有序数组中找num是否存在 实现思路 先定义左索引为0有索引为数组长度-1然后定义中间索引(在左索引和右索引的中间)然后拿num和中间索引对应的数作比较相等的话代表这个数存在。如果num大于中间索引的数因为是有序数组中间索引左边的数都小于等于中间索引的数所以要查找的数的范围是在中间索引右边到右索引里面让其左索引等于中间索引加1然后再从步骤2开始如果要查找的数小于中间索引的数那么应该在左索引到中间索引这个范围内让右索引等于中间索引减1再从步骤2开始 实现代码(里面运用了对数器) public static void main(String[] args) {int N 100;int V 1000;int testTime 500000;System.out.println(测试开始);for (int i 0; i testTime; i) {//[0,1) * 100 [0,100)int n (int) (Math.random() * N);int[] arr randomArray(n, V);Arrays.sort(arr);int num (int) (Math.random() * V);int a right(arr,num);int b getIndex(arr,num);if (a ! b){System.out.println(出错了);}}System.out.println(测试结束);}public static int right(int[] arr, int num) {if (Arrays.binarySearch(arr, num) 0){return Arrays.binarySearch(arr, num) ;}else {return -1;}}public static int getIndex(int[] arr, int num) {if (arr null || arr.length 0) {return -1;}int left 0;int right arr.length - 1;while (left right) {int mid left (right - left) / 2;if (arr[mid] num) {return mid;} else if (arr[mid] num) {right mid - 1;} else {left mid 1;}}return -1;}public static int[] randomArray(int n, int v) {int[] arr new int[n];for (int i 0; i n; i) {//[0,1) * 1000 1 [1,1000]arr[i] (int) (Math.random() * v) 1;}return arr;} 在有序数组中找num的最左位置 实现思路 先定义左索引为0有索引为数组长度-1然后定义中间索引(在左索引和右索引的中间)定义最终一个索引为-1判断中间索引的元素和num的比较情况 num大所以在中间索引右边的区域重复步骤2num小在左边的区域让最终索引等于中间索引看左边区域重复步骤2 返回最终索引 代码实现 public static void main(String[] args) {int N 100;int V 1000;int testTime 500000;System.out.println(测试开始);for (int i 0; i testTime; i) {int n (int) (Math.random() * N);int[] arr randomArray(n, V);Arrays.sort(arr);int num (int) Math.random() * V;if (rightIndex(arr,num) ! getIndex(arr,num)){System.out.println(出错了);}}System.out.println(测试结束);}public static int[] randomArray(int n, int v) {int[] arr new int[n];for (int i 0; i n; i) {arr[i] (int) (Math.random() * v 1);}return arr;}public static int rightIndex(int[] arr, int num) {for (int i 0; i arr.length; i) {if (arr[i] num) {return i;}}return -1;}public static int getIndex(int[] arr, int num) {int left 0;int right arr.length - 1;int ans -1;while (left right) {int mid left (right - left) / 2;if (arr[mid] num){left mid 1;}else {ans mid;right mid -1;}}return ans;}在有序数组中找num的最右位置 实现思路 和上面第二个的思路差不多。用暴力解求索引时让其从后往前遍历然后让其元素小于等于num在通过最优解(二分查找)时中间索引大于num时范围就编程中间索引的左边反之最终索引等于中间索引然后范围在中间索引的右边 实现代码 public static void main(String[] args) {int N 100;int V 1000;int testTime 500000;System.out.println(测试开始);for (int i 0; i testTime; i) {int n (int) (Math.random() * N);int[] arr randomArray(n, V);Arrays.sort(arr);int num (int) Math.random() * V;if (rightIndex(arr,num) ! getIndex(arr,num)){System.out.println(出错了);}}System.out.println(测试结束);}public static int[] randomArray(int n, int v) {int[] arr new int[n];for (int i 0; i n; i) {arr[i] (int) (Math.random() * v 1);}return arr;}public static int rightIndex(int[] arr, int num) {for (int i arr.length - 1; i 0; i--) {if (arr[i] num) {return i;}}return -1;}public static int getIndex(int[] arr, int num) {int left 0;int right arr.length - 1;int ans -1;while (left right) {int mid left (right - left) / 2;if (arr[mid] num){right mid - 1;}else {ans mid;left mid 1;}}return ans;}二分搜索不一定发生在有序数组上(比如寻找峰值问题) 题目描述 峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组 arr找到峰值元素并返回其索引。数组可能包含多个峰值在这种情况下返回任何一个峰值所在位置即可。你可以假设 arr[-1] arr[n] -∞ 。你必须实现时间复杂度为 O(log n) 的算法来解决此问题。 实现思路 先判断数组个数 如果个数为1那么这个数就是峰值返回0索引如果不为1也就是大于等于2 数组长度大于等于2 判断第一个数和第二个数的大小如果第一个数大于第二个数那么第一个数就是峰值判断倒数第一个数和倒数第二个数如果倒数第一个数大于倒数第二个数那么倒数第一个数就是峰值 不属于步骤2的俩个条件那么就可以用二分搜索 定义中间索引判断中间索引数和中间索引数的前一个数如果中间索引数小于中间索引数的前一个数那么中间索引左边的范围必有峰值判断中间索引数和中间索引数的后一个数如果中间索引数小于中间索引数的后一个数那么中间索引右边的范围必有峰值如果上述bc都不成立那么中间索引数为峰值 实现代码 public int findPeakPoint(int[] arr) {int n arr.length;if (arr null || arr.length 0) {return -1;}if (arr.length 1) {return 0;}if (arr[0] arr[1]) {return 0;}if (arr[n - 1] arr[n - 2]) {return n - 1;}int left 1;int right n - 2;int ans -1;while (left right) {int mid left (right - left) / 2;if (arr[mid - 1] arr[mid]) {right mid - 1;} else if (arr[mid] arr[mid 1]) {left mid 1;} else {ans mid;break;}}return ans;}
http://www.hkea.cn/news/14551858/

相关文章:

  • 建设实验室网站的意义多人运动免费正能量网站链接
  • 设计好的商城网站建设网络公司河南确诊病例最新消息
  • 如何做网站聚合页天津建筑工程信息
  • 网站的空间是个人简历ppt
  • 自己做网站排版网站建设文案有趣
  • 成都网站制作推来客网站系统好吗一般网站开发的硬件要求
  • 自建网站需要学哪些中国建设银行官方网站登录
  • 平泉市住房和城乡建设局网站随州建设局网站
  • 上海网站制作科技公司一个主做海贼王的网站
  • 网站模板免费下载云资源wordpress dz 整合
  • 摄影协会网站源码广东网站建设联系电话
  • 阳江做网站seo专做西餐的网站
  • 做服装设计兼职的网站工装公司排名前十
  • 网页设计制作心得乐陵外贸seo
  • 惠州建设工程交易网站淘宝代码网站有哪些
  • 建站工具 风铃徐州领航装饰工程有限公司
  • 潍坊网站制作工具办网站用什么证件
  • 广东建设网站动画设计就业方向和发展前景
  • ps制作网站产品图片做游戏视频网站要批证吗
  • 云南制作网站的公司网页制作素材服装类
  • 南京h5网站建设wordpress翻页按钮颜色
  • 免费建站哪家性价比高wordpress需要什么主机
  • 神奇的工作室最新网站宝安三网合一网站建设
  • 有什么设计logo网站成都网站搜索优化
  • 中国人在国外做网站网站代理wordpress小工具不能完全显示
  • wordpress更换皮肤简述优化搜索引擎的方法
  • 百度不收录网站360建站
  • 廊坊市网站建设公司南昌大学南昌网站建设公司
  • dw网站制作怎么做滑动的图片国际时事新闻
  • 做一个网站的步骤wordpress首页缩略图插件