1 import java.util.Scanner; 2
3 public class OrderBy { 4
5 public static void main(String[] args) { 6 // Scanner scan = new Scanner(System.in); 7 // System.out.println("1到n的和,请输入n···"); 8 // int i = scan.nextInt();
9 System.out.println(fun(100));//递归
10
11 int[] aArray = {7,5,3,8,2,9,1,4,6};//目标数组
12 orderBy1(aArray);//选择排序
13 orderBy2(aArray);//冒泡排序
14 orderBy3(aArray);//插入排序
15 } 16 /**
17 * 递归 18 * @param i 19 * @return
20 */
21 private static int fun(int i){ 22
23 if(i==1){ 24 return 1;//递归基数(1到1的和为1)
25 } 26 else{ 27 int sum = i+fun(i-1);//i加1到(i-1)的和
28 /**
29 * 其中fun(i-1) = (i-1)+fun(i-2),以此类推 30 */
31 return sum; 32 } 33 } 34 /**
35 * 排序1 36 * 选择 37 */
38 private static void orderBy1(int[] aArray){ 39
40 for(int i=0;i<aArray.length;i++){ 41 int var=aArray[i];//每次初值为第一位
42 for(int j=i;j<aArray.length;j++){//从索引i开始
43 var = var<aArray[j]?var:aArray[j];//三元取较小值
44 } 45 for(int j=i;j<aArray.length;j++){//从索引i开始让最小值和i为互换位置
46 if(aArray[j]==var){ 47 aArray[j]=aArray[i]; 48 aArray[i]=var; 49 } 50 } 51 } 52 for(int m:aArray){//for each遍历新数组
53 System.out.print(m+"\t"); 54 } 55 System.out.println(); 56 } 57 /**
58 * 排序2 59 * 冒泡 60 */
61 private static void orderBy2(int[] arr){ 62
63 for(int i=0;i<arr.length-1;i++){ 64 int var = arr[i]; 65 if(var>arr[i+1]){//互换位置,小的排前面
66 arr[i] = arr[i+1]; 67 arr[i+1] = var; 68 i=-1;//重新遍历
69 } 70 } 71 for(int m:arr){ 72 System.out.print(m+"\t"); 73 } 74 System.out.println(); 75 } 76 /**
77 * 排序3 78 * 插入 79 */
80 private static void orderBy3(int[] arr){ 81 for(int i=1;i<arr.length;i++){//遍历 82 //逐个与排完序部分比较,第一次遇到比之大的数时则插入该数的位置,将后面部分往后挤
83 int var = arr[i]; 84 No1:for(int j=0;j<i;j++){ 85 if(var<arr[j]){ 86 for(int m=i;m>=j;m--){//j到i之间的元素后移1位
87 if(m>j){ 88 arr[m]=arr[m-1];//j之后i之前的元素后移一位
89 }else{ 90 arr[j]=var;//把var插入到j索引处
91 } 92 } 93 break No1;//遇到第一个比var大的数,排完序后结束比较
94 } 95 } 96 } 97 for(int n:arr){ 98 System.out.print(n+"\t"); 99 } 100 System.out.println(); 101 } 102 }
结果: