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<array.length-i;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<array.length-1;i++){ for(int j=i+1;j<array.length;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; }
时间: 2024-10-29 04:05:14