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