杨辉三角
//使用二维数组打印一个 10 行杨辉三角。
// 1. 第一行有 1 个元素, 第 n 行有 n 个元素
//2. 每一行的第一个元素和最后一个元素都是 1
//3. 从第三行开始, 对于非第一个元素和最后一个元素的元素。即:
//yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 10;
int[][] yanghui = new int[n][];
for(int i = 0; i < n; i++){
yanghui[i] = new int[i + 1];
}
for(int j = 0; j < n; j++){
for(int k = 0; k < yanghui[j].length; k++){
if(k == 0 || k == yanghui[j].length-1){
yanghui[j][k] = 1;
}else{
yanghui[j][k] = yanghui[j - 1][k - 1] + yanghui[j - 1][k];
}
}
}
for(int i = 0; i < n; i ++){
for(int j = 0; j < yanghui[i].length; j++){
System.out.print(yanghui[i][j] + " ");
}
System.out.println();
}
}
}
有序数组的二分法找值
public class Test1 {
public static void main(String[] args) {
int[] a = {10,6,88,64,45,23,4,47};
//冒泡排序 (可直接用 Arrays.sort(a); 替代)
int temp;
for(int i = 0; i < a.length-1; i++){
for(int j = 1; j < a.length - i; j++){
if(a[j - 1] > a[j]){
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
}
}
}
for(int i = 0; i < a.length; i ++){
System.out.println(a[i]);
}
//利用二分法查找值(可直接用 Arrays.binarySearch(a, find); 替代)
int find = 64;
int sta = 0;
int end = a.length-1;
int mid = (sta + end) / 2 ;
int flag = 0;
while(sta <= end){
if(find == a[mid]){
flag = 1;
break;
}else if(find > a[mid]){
sta = mid + 1;
mid = (sta + end) / 2 ;
}else {
end = mid - 1;
mid = (sta + end) / 2 ;
}
}
if(flag == 1){
System.out.println("找到了" + find + ",它的索引值为:" + mid);
}else{
System.out.println("没找到该数值");
}
}
}
数组排序可直接利用核心类库里的方法实现:Arrays.sort()
二分法找值也可直接利用核心类库里的方法实现:Arrays.binarySearch()
多用 Arrays 类!!!