递归(Recursion)
定义--一种常见的解决问题的方法,即把问题逐渐简单化。基本思想是“自己调用自己”。
组成--递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环。
递归体。解答:什么时候需要调用自身。
1 public class A { 2 public static long factorail(int n){ 3 if(n==1){ //递归头 4 return 1; 5 }else{ //递归体 6 return n*factorail(n-1); 7 } 8 } 9 public static void main(String[] args){ 10 System.out.println(factorail(5)); 11 } 12 }
冒泡排序
1 public class Test { 2 public static void main(String[] args) { 3 int[] values = { 3, 1, 6, 2, 9, 0, 7, 4, 5,8 }; 4 sort(values); 5 System.out.println(Arrays.toString(values)); 6 } 7 public static void sort(int[] values) { 8 int temp; 9 for (int i = 0; i < values.length; i++) { 10 for (int j = 0; j < values.length - 1- i ; j++) { 11 if (values[j] > values[j + 1]) { 12 temp = values[j]; 13 values[j] = values[j + 1]; 14 values[j + 1] = temp; 15 } 16 } 17 } 18 } 19 }
二分法查找
1 public class TestBinarySearch { 2 public static void main(String[] args) { 3 //System.out.println(args[1]); 4 int[] arr = {234,245,77,3,543,67,78,95,378,678,205,753,457,2903,340} ; 5 int searchWord = 6780; //所要查找的数 6 int searchCount = 0; //循环的次数 7 System.out.printf("普通循环查找%d的次数是%d",searchWord,genetalLoop(arr,searchWord)); 8 System.out.printf("二分法查找%d的次数是%d",searchWord,binarySearch(arr,searchWord)); 9 } 10 static int genetalLoop(int[] arr,int searchWord){ 11 //普通的循环法,最少需要比较一次,比如查找1,最多需要比较15次,比如8721 12 int searchCount = 0; 13 for(int i=0;i<arr.length;i++){ 14 searchCount++; 15 if (searchWord==arr[i]) 16 break; 17 } 18 return searchCount; 19 } 20 //int[] arr = {234,245,77,3,543,67,78,95,378,678,205,753,457,2903,340}; 21 static int binarySearch(int[] arr,int searchWord){ 22 Arrays.sort(arr); //先对传进来的数组进行排序 23 System.out.println(" "+Arrays.toString(arr)); 24 //二分法查找 25 int iIndex=0; //相当于指针的东西 26 int iStart=0; 27 int iEnd=arr.length-1; 28 int searchCount = 0; 29 for(int i=0;i<arr.length/2;i++) { 30 searchCount++; 31 iIndex = (iStart+iEnd)/2; 32 if(arr[iIndex]<searchWord){ 33 System.out.println("aa"); 34 iStart = iIndex; 35 }else if(arr[iIndex]>searchWord){ 36 System.out.println("bb"); 37 iEnd = iIndex; 38 }else{ 39 break; 40 } 41 } 42 return searchCount; 43 } 44 }