《算法 第4版》
1.二分法查找
思路:折中查找
2.求得两个非负整数的最大公约数
思路:计算两个非负整数 p 和 q 的最大公约数(p>=q) 若
q 是 0, 则最大公约数为 p。 否则, 将 p 除以
q 得到余数 r, p 和 q 的最大公约数即为 q 和
r 的最大公约数。
3.数组颠倒
思路:对称交换
1.二分法查找
思路:折中查找
import java.util.*;
public class BinarySearch
{
public static int rank(int key, int[] a)
{
int lo = 0;
int hi = a.length-1;
int mid = 0;
while(lo <= hi)
{
mid = (lo + hi) / 2;
if(key > a[mid])
lo = mid + 1;
else if(key < a[mid])
hi = mid - 1;
else
return mid;
}
return -1;
}
}
2.求得两个非负整数的最大公约数
思路:计算两个非负整数 p 和 q 的最大公约数(p>=q) 若
q 是 0, 则最大公约数为 p。 否则, 将 p 除以
q 得到余数 r, p 和 q 的最大公约数即为 q 和
r 的最大公约数。
public static int gcd(int p, int q)
{
if(q == 0)
return p;
int r = p%q;
return gcd(q, r);
}
3.数组颠倒
思路:对称交换
public static void reverse_array(int[] a)
{
int n = a.length;
int t;
for(int i = 0; i < n/2; i++)
{
t = a[i];
a[i] = a[n-1-i];
a[n-1-i] = t;
}
}