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+" ");
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+" ");
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+" ");
99 }
100 System.out.println();
101 }
102 }
结果: