运行时间为对数的经典三例子

来源:互联网 发布:液晶电视机编程器 编辑:程序博客网 时间:2024/05/17 09:15

1.折半查找

package chapter2;public class Demo2 {public static void main(String[] args) {int a[] = { 13, 11, 2, -2, -4, -5 };// 规定已完成排序int x = -4;System.out.println(binarySearch(a, x));}public static int binarySearch(int[] a, int x) {int low = 0;int high = a.length - 1;while (low < high) {int mid = (low + high) / 2;if (a[mid] > x) {low = mid + 1;} else if (a[mid] < x) {high = mid - 1;} else {return mid;}}return -1;}}

2.欧几里德算法(计算两个整数的最大公因数)

package chapter2;import java.util.Scanner;public class Demo2 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);long M = scanner.nextInt();long N = scanner.nextInt();System.out.println(gdc(M, N));}private static long gdc(long m, long n) {while (n != 0) {long rem = m % n;m = n;n = rem;}return m;}}

3 幂运算

package chapter2;import java.util.Scanner;public class Demo2 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);long x = scanner.nextInt();int n = scanner.nextInt();System.out.println(pow(x, n));}private static long pow(long x, int n) {if (n == 0) {return 1;} else if (n == 1) {return x;} else if (n % 2 == 0) {return pow(x * x, n / 2);} else {return pow(x * x, n / 2) * x;}}}


0 0
原创粉丝点击