算法
Rainer_Guo
这个作者很懒,什么都没留下…
展开
-
旋转有序数组
要求 给定一个没有重复元素的旋转数组(它对应的原数组是有序的),求给定元素在旋转数组内的下标(不存在的返回-1)。 例子 有序数组{0,1,2,3,4,5,6,7}对应的旋转数组为{3,4,5,6,7,0,1,2}(左旋、右旋效果相同)。 查找元素5,返回结果2; 查找元素8,返回结果-1。 变形 旋转有序数组找最小值下标 分析 可以轻易地想到遍历一遍O(n)时间可以得到结果,但是并不是最好的结果;利用有序的特点,可以轻易的想到二分查找的方法。经过旋转后的数组总是可以分...转载 2020-06-11 23:31:03 · 671 阅读 · 0 评论 -
求某数的根号,牛顿迭代法
求m的根号,首先任意指定一个x 递推公式: Xn+1 = (X+m/X)/2 package Newton; /** * 返回根号n,精确度小于0.000001 * @author guoyujie * */ public class Main { public static void main(String[] args) { System.out.println(new Newton().sqrt(25)); } } //牛顿迭代法 class Newton{ public d原创 2020-06-11 22:55:34 · 1600 阅读 · 0 评论 -
Java随机打乱数组的方法
看面经里看到过这一题,然后自己查了一下,记录一下 写一个shuffle函数打乱数组 方法一 随机选择从当前下标到数组末尾的一个数进行交换 public class Main { public static void main(String[] args) { int[] nums = {1,2,3,4,5,6}; shuffle(nums); for(int n:nums) System.out.print(n+" "); } public static void shuf原创 2020-06-11 16:08:09 · 1142 阅读 · 0 评论