首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

06已知一个有序数组arr,和一个数字num 返回数组中是否含有这个数字 (使用二分法).zip

后端 1.19KB 18 需要积分: 1
立即下载

资源介绍:

已知一个有序数组arr,和一个数字num。返回数组中是否含有这个数字。(使用二分法)
package class01; import java.util.Arrays; /** * 二分法 * 已知一个有序数组arr,和一个数字num。返回数组中是否含有这个数字。(使用二分法) *

* 常规二分法的时间复杂度,O(logN)。 * O(log2N),即log以2为底,N的对数。 *

* 一次砍一半,一次砍一半,一次砍一半。 * N个数,一共砍几次呢?一共砍了O(log2N)次,每砍一次,看一眼这个中点上的数,是O(1)的。 * 所以就是log2N乘以1,还是O(log2N)。 */ public class Code04_BSExist { public static void main(String[] args) { //当写while (L < R)时,是错误的,反例如下。正确的写法是while (L <= R)。 //-24 -21 -19 -13 -10 -8 0 7 10 10 20 //int[] arr = {-24, -21, -19, -13, -10, -8, 0, 7, 10, 10, 20}; int maxSize = 30; int maxValue = 30; int testTimes = 10; int num = 7; boolean flag = true; for (int i = 0; i < testTimes; i++) { int[] arr = generateRandomArray(maxSize, maxValue); Arrays.sort(arr); printArr(arr); System.out.println(num); boolean b = exist(arr, num); System.out.println(b); System.out.println("---"); boolean test = test(arr, num); if (b != test) { flag = false; break; } } System.out.println(flag ? "nice!" : "oops!"); } public static boolean exist(int[] sortedArr, int num) { int L = 0; int R = sortedArr.length - 1; while (L <= R) { int mid = L + ((R - L) >> 1);//必须要加括号,否则会先算加法,导致死循环。 if (sortedArr[mid] < num) { L = mid + 1; } else if (sortedArr[mid] > num) { R = mid - 1; } else { return true; } } return false; } public static int[] generateRandomArray(int maxSize, int maxValue) { int[] arr = new int[(int) ((maxSize + 1) * Math.random())]; for (int i = 0; i < arr.length; i++) { arr[i] = (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random()); } return arr; } public static void printArr(int[] arr) { for (int i : arr) { System.out.print(i + " "); } System.out.println(); } public static boolean test(int[] arr, int num) { for (int i : arr) { if (i == num) { return true; } } return false; } }

资源文件列表:

06已知一个有序数组arr,和一个数字num。返回数组中是否含有这个数字。(使用二分法).zip 大约有1个文件
  1. 06.txt 2.66KB
0评论
提交 加载更多评论
其他资源 i2pinstall_0.9.18_windows (1).zip
i2pinstall_0.9.18_windows (1).zip
bugreport-2024-07-30-203317.zip
bugreport-2024-07-30-203317.zip
【浏览器插件】Instapaper.zip
Instapaper 是一款简洁的应用程序,专为保存网页设计,方便您在 iPhone、iPad、Android 设备、电脑或 Kindle 上随时阅读。这款浏览器插件可以替代传统的书签功能,将您感兴趣的文章一键保存至 Instapaper 的阅读列表中。它的操作方式是将您当前浏览的网页保存到您的 Instapaper 账户。对于尚未登录的用户,系统会引导您前往登录或注册页面。一旦注册完成,您将被自动重定向回原始页面,并且该页面已被保存至您的阅读队列中。
【浏览器插件】Octotree GitHub code tree.zip
增强 GitHub 代码审查与探索功能的浏览器扩展。主要特性包括: - 类似 IDE 的代码树快速浏览 - 树状结构快速搜索代码 - 将代码库、问题、PR 和文件添加至书签 - 支持 GitHub 主题 - 兼容私有仓库 - 高性能设计,适用于任何规模的代码库 专业版特有功能: - 多标签页浏览 - 文件图标自定义主题 - 代码字体个性化设置 - 快速导航至 PR - 无限量书签 - 拉取请求的深度代码审查 - 侧边栏固定位置 - 多 GitHub 账号支持 - 兼容 GitHub 企业版 了解更多详情,请访问:[Octotree 功能介绍](https://www.octotree.io/features) 隐私政策:Octotree 承诺不追踪用户行为,不分享或关心您的数据。只有在访问私有仓库或超出 GitHub API 调用限制时,才需要使用 GitHub 令牌。令牌仅存储于浏览器,用于身份验证。
概述:先将i指向第二个数(索引为1),将j指向i-1位置,如果j大于等于0,并且arrj>arrj+1,将将arrj
概述:先将i指向第二个数(索引为1),将j指向i-1位置,如果j大于等于0,并且arr[j]>arr[j+1],将将arr[j]和arr[j+1]交换。j--。
orangefox-cepheus-stable@r11.0_3.zip
orangefox-cepheus-stable@r11.0_3.zip
haxm-windows-v7-8-0.zip
.NET\C# MAUI开发模拟器加速haxm
计组ppt计组ppt计组ppt计组ppt
计组ppt计组ppt计组ppt计组ppt
计组ppt计组ppt计组ppt计组ppt 计组ppt计组ppt计组ppt计组ppt 计组ppt计组ppt计组ppt计组ppt