1.递归:
public class TestRecursion01 {
public static void main(String[] args) {
//返回当前的时刻
long d1=System.currentTimeMillis();
System.out.printf("%d阶乘的结果是:%s%n",10,fact(10));
long d2=System.currentTimeMillis();
System.out.printf("本次的递归耗时:%s%n",d2-d1);
factloop(10);
}
//递归方法
static long fact(int n){
if(n==1){
return 1;
}else {
return n*fact(n-1);
}
}
//普通方法
static long factloop(int n){
long d3=System.currentTimeMillis();
int sum=1;
while(n>1){
sum=sum*n;
n--;
}
/*while(n>1){
sum*=n*(n-1);
n-=2;
}*/
long d4=System.currentTimeMillis();
System.out.println(sum);
System.out.printf("普通用循环耗时:%s%n",d4-d3);
return sum;
}
}
2.冒泡
public class TestMaopao {
public static void main(String[] args) {
int [] value={3,1,6,2,9,0,7,4,5,8};
for(int i=0;i<value.length-1;i++){//总共循环的次数
boolean flag=true;//设置一个标签,当已经排好顺序之后,就不再进行冒泡了
for(int j=0;j<value.length-1-i;j++){//每次循环多少次
//比较大小,换顺序
if(value[j]>value[j+1]){
int temp=value[j];
value[j]=value[j+1];
value[j+1]=temp;
flag=false;
}
System.out.println(Arrays.toString(value));
}
if(flag){
break;
}
System.out.println("*************");
}
}
}
3.二分查找/折半查找
public class TestBinarySearch {
public static void main(String[] args) {
int[] arr={30,20,50,10,80,9,7,100,33,41,2,40};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println(myBinarySearch(arr,7));
}
public static int myBinarySearch(int[] arr,int value){
int low=0;
int high=arr.length-1;
while(low<=high){
int mid=(low+high)/2;
if(value==arr[mid]){
return mid;
}
if(value>arr[mid]){
low=mid+1;
}
if(value<arr[mid]){
low=mid-1;
}
}
return -1;
}
}
4.九九乘法口诀
public class Test99 {
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.println();
}
}
}