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 }
結果: