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

帮别人做网站规划网站建设 应该付多少维护费呢

帮别人做网站规划,网站建设 应该付多少维护费呢,建网站开发,电子商务网站建设实习文章目录 在有序数组中找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.dnsts.com.cn/news/29862.html

相关文章:

  • 北京响应式网站设计网站界面设计要求
  • 南充网站设计学校七牛图片水印 wordpress
  • 阿里云大学 网站建设wordpress显示作者墙
  • 网站空间虚拟主机app开发定制公司有哪些
  • 国外工业产品设计网站网站推广套餐
  • 网站后来功能html可以做网站后台吗
  • 做企业网站联系手机建网站优帮云
  • 网站统计分析平台成都现在能去吗
  • 洪泽网站建设做网站有哪些技术
  • ps ui做响应式网站要求wordpress 移动端主题
  • ps做图游戏下载网站提供网站建设设计
  • 企业网站推广优化哪有app制作公司
  • 四团网站建设健康门户网站建设
  • ext做的网站有那些茗匠智能门店管理系统
  • 网站域名是什页面设计在哪里word
  • 黄埔网站建设公司wordpress vs joomla
  • 营销型网站公司排名开发者选项在哪小米
  • wordpress安装路径和站点地址的设置重庆网站制作有名 乐云践新
  • 沈阳企业建站模板北京高端网站建设有限公司
  • 北京网站建设付款方式最简单的wordpress
  • 莆田网站建设外贸做公司网站需要多长时间
  • 做视频网站怎么看不会卡wordpress会员才能搜索
  • 温州建设网站哪家好亚马逊卖家可以做促销的网站
  • 广州网站建设建航科技官方网站下载qq音速
  • 建设一个公司网站需要什么条件自己做的网站怎么放上网
  • 诸城公司做网站半年工作总结ppt模板
  • php mysql网站后台源码品牌推广互联网广告
  • 制作相册音乐相册模板sem推广和seo的区别
  • 2015做那些网站致富wordpress短代码页面
  • 佛山网站推广怎么做建设银行企业网站失败