1 递归:调用自己的方法
2 递归三原则:1.封装一个独立的方法
3 2.递归一定要有出口(结束条件)
4 3.符合一定的规律
5
6 斐波拉契 1 1 2 3 5 8 13 21 ..........
7 // int n1=1,n2=1;
8 // int sum=0;
9 // for(int i=2;i<8;i++) {
10 // sum=n1+n2;
11 // n1=n2;
12 // n2=sum;
13 // }
14 // System.out.println(sum);
15 // System.out.println(new Fbl().fb(8));
16 递归做法:
17 // public int fb(int a) {
18 // if(a==1||a==2) {
19 // return 1;
20 // }else {
21 // return fb(a-1)+fb(a-2);
22 // }
23 // }
24 快速排序
25
26
27 陆军成 2019/7/31 19:21:46
28
29 public class QuickSort {
30 public static void quickSort(int[] arr, int left, int right) {
31 int pivot = 0; //基准点
32 if (left < right) {
33 pivot = partition(arr, left, right);//得到基准点
34 quickSort(arr, left, pivot - 1);//左子序列排序
35 quickSort(arr, pivot + 1, right);//右子序列排序
36 }
37
38 }
39
40 private static int partition(int[] arr, int left, int right) {
41 int key = arr[left];//选取第一个元素为基准元素 left指向数列的最左部,right指向数据的最右部
42 while(left < right) {
43 while(left < right && arr[right] >= key) {//如果arr[right]>=key,将right--,直到arr[right]遇到比key小的值为止
44 right--;
45 }
46 arr[left] = arr[right];//将arr[right]这个比key小的数放到左边去
47 while(left < right && arr[left] <= key) {//拿arr[left]与key进行比较,如果arr[left]<key则将left++
48 left++; //然后再进行arr[left]与key的比较,直到遇到arr[left]>=key的值为止
49 }
50 arr[right] = arr[left];//将arr[left]这个比key大的数放到右边
51 }
52 arr[left] = key;//当left与right相等时退出while循环,key的值赋给当前left与right相等的位置,
53 //得到一个以key基准的数列,左子数列的元素都比key的值小,右子数列都比key的值大
54 return left;//返回新基准点的下标
55 }
56 }