java數組排序(插入排序、冒泡排序、選擇排序)與遞歸 代碼示例


 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 }

 

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM