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;
}
}
}