zoukankan      html  css  js  c++  java
  • 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+"	");
     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 }

    结果:

  • 相关阅读:
    P站画师 GTZ taejune 精选4k插画壁纸
    点、向量与坐标系
    一些几何
    画直线算法 Line drawing algorithm
    DX11 学习大纲
    插值 Interpolation
    The History of Computer Graphics
    vue中的请求拦截响应
    Event loop
    小程序使用wx.navigateTo()跳转失败
  • 原文地址:https://www.cnblogs.com/-maji/p/7298596.html
Copyright © 2011-2022 走看看