private static void nineNineMulitTable(){
/**
* 9*9乘法表
*/
for (int i = 1,j = 1; j <= 9; i++) {
System.out.print(i+"*"+j+"="+i*j+" ");
if(i==j){
i=0;
j++;
System.out.println();
}
}
}
/**
* 判断是否为素数12=2*6=3*4 false
* @param num 质数只能被1 和他本身整除
* @return
*/
private static boolean isPrimeNumber(int num ){
for (int i=2;i <= Math.sqrt(num);i++){
if(num % i == 0){
return false;
}
}
return true;
}
/**
* 递归算阶乘4*3*2*1
* @param num
* @return
*/
private static int f(int num){
if(num == 1){
return 1;
}
return num * f(num-1);
}
/**
* “水仙花”
*/
private static void flower(){
for(int m=101;m<1000;m++){
int b1 = m/100;
int b2 = m%100/10;
int b3 = m%10;
int n = b1*b1*b1+b2*b2*b2+b3*b3*b3 ;
if(m == n){
System.out.println("--"+m);
}
}
}
斐波那契数列
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
/**
* 方法一,使用中间变量,赋值给最近的前两个数
*/
int f1 = 1, f2 = 1, f, M=24;
for(int i=3; i<=M; i++) {
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.println("第" + i +"个月的兔子对数: "+f2);
}
/**
* 方法二,递归方法
*/
private static int fun(int m){
if(m<3){
return 1;
}else{
return fun(m-1)+fun(m-2);
}
}
常用的排序方法:
/**
* 冒泡排序
* 依次比较相邻的两个数,将小数放在前面,大数放在后面
* 具有稳定性
* 时间复杂度为O(n^2)
* 不及堆排序,快速排序O(nlogn,底数为2)
* @param array
*/
private static void buddleSort(int[] array){
for(int i=1;i < array.length;i++){
for(int j=0;j
int temp;
if(array[j] > array[j+1]){
temp = array[j];
array[j] =array[j+1];
array[j+1] = temp;
}
}
}
}
/**
* 选择排序
* @param array
*/
private static void selectSort(int[] array){
for(int i=0;i
for(int j=i+1;j
int temp;
if(array[i] > array[j]){
temp = array[j];
array[j] =array[i];
array[i] = temp;
}
}
}
}
/**
* 二分法查找算法,前提是有序的
* @param args
*/
private static int BinarySearch(int[] array, int num){
int low =0;
int high = array.length - 1;
while(low <= high){
int mid = (low + high)/2;
if(num > array[mid]){
low = mid +1;
}else if(num < array[mid]){
high = mid -1;
}else{
return mid;
}
}
return -1;
}