【四大排序的总结】

八大排序:的时间复杂度。
这里写图片描述

这里只写下四大排序的内容

插入排序:

/**
 * 插入排序
 * @author Jay-Tang
 *
 */
public class insertsort {

       static int[] arrayint ={12,23,223,11,22};


       private static void paixu() {
        //外層循環
           for(int i=0;i<arrayint.length-1;i++){
               for(int j=i+1; j>0; j-- ){
                 while(arrayint[i+1]>arrayint[i]){
                     break;
                 }
                   if (arrayint[j-1]>arrayint[j]) {
                       //交換位置
                      int tmp=arrayint[j-1];
                     arrayint[j-1]=arrayint[j];
                     arrayint[j]=tmp;
                   }
               }
           }
       } 
      //輸出排序的函數
      public static void main(String[] args) {
        paixu();
       for(int i=0;i<arrayint.length;i++){
        System.out.println(arrayint[i]);
        }
    }


}

快速排序:

public class kuaisupaixu {
    //一個數組
    static int [] intarray={12,232,23,232,32,32};
    //判斷是否為空
    public static boolean  isEmpty(int[] n){
        return n==null||n.length==0;    
    }
    public static void quicksort(int [] n){
        if (isEmpty(n)) {
            return;
        }
        quicksort(n,0,n.length-1);

    }
    private static void quicksort(int[] n, int l, int h) {
        if (isEmpty(n)) {
            return;
        }
        if (l<h) {
            //基质pivot
            int pivot=partion(n,l,h);
            //正向比一次
            quicksort(n,l,pivot-1);
            //反向比一次
            quicksort(n,pivot+1,h);
        }

    }
    //排出基质
    private static int partion(int[] n, int start, int end) {
    //以起始点位基质
        int tmp=n[start];
    //当初始值小于end
        while(start<end){
        //当最后一位数大于基数  不变
            while(n[end]>=tmp&&start<end){
                //最后一位的指针前移一位
                end--;  }
               //否则交换位置
                if (start<end) {
                    n[start++]=n[end];
                }
                while(n[start]<tmp&&start<end){
                start++;
                }
                //否则交换位置    
                if (start<end) {
                    n[end]=n[start];
                    end--;
                }
                }

        n[start]=tmp;   
        return start;

    }


    public static void main(String[] args) {
    quicksort(intarray);
    for(int i=0;i<intarray.length;i++){
        System.out.println(intarray[i]);

    }
}


}

冒泡:



/**
 * 從下到大排
 * @author Jay-Tang
 *
 */
public class maopao {
    //数组
    static int [] intarray={12,232,23,232,32,32};

    //
public static void main(String[] args) {

    //排序外層循環
    for(int i=0;i<intarray.length;i++){
    //內存循環  如果比下一個大就替換 注意數組越界的問題   
        for(int j=intarray.length-1;j>0;j--){
            if (intarray[j-1]>intarray[j]) {
                int tmp=intarray[j-1];
                intarray[j-1]=intarray[j];
                intarray[j]=tmp;
            }
        }
}
for(int i=0;i<intarray.length;i++){
    System.out.println(intarray[i]);
}
}
}

选择:

import javax.print.attribute.standard.MediaName;

/**
 * 選擇排序
 * 原理是先選排出最小的再選
 * @author Jay-Tang
 *
 */
public class xuanzepaixu {
     static int[] arrayint ={12,23,223,11,22};

     //外層循環
     public static void paixu(){
         //
         for(int i=0;i<arrayint.length;i++){
             for(int j=i+1;j<arrayint.length;j++){
                 //如果比第n個小
             if (arrayint[i]>arrayint[j]) {
                 int tmp=arrayint[i];
                 arrayint[i]=arrayint[j];
                 arrayint[j]=tmp;
            }
             }
         }


     } 
    //輸出排序的函數
    public static void main(String[] args) {
        paixu();
    for(int i=0;i<arrayint.length;i++){
        System.out.println(arrayint[i]);
    }
    }

}

源码见github:https://github.com/tangsilian/securitystudy/tree/master/Swap

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值