1. 程式人生 > >java基礎-四種排序:選擇/冒泡/直接插入/shell

java基礎-四種排序:選擇/冒泡/直接插入/shell

import java.util.Arrays;
/**
 * @Created with IntelliJ IDEA
 * @Description: 四種排序
 * @Package: PACKAGE_NAME
 * @User: FLy
 * @Date: 2018/11/21
 * @Time: 10:42
 */
public class Sort {
    public static int[] SelectionSort(int []array1){ //選擇排序
        for(int i=0;i<array1.length-1;i++){
            int min=array1[i];
            for(int j=i+1;j<array1.length;j++){
                if(array1[j]<min){
                    int tmp=min;
                    min=array1[j];
                    array1[j]=tmp;
                }
            }
            array1[i]=min;
        }
        return array1;
    }
    public static byte[] InsertSort(byte[] array2){//直接插入排序
        for (int i = 1; i <array2.length ; i++) {
            byte tmp=array2[i];
            int j;
            for ( j = i; j >=1 ; j--) {
                if(array2[j-1]>tmp){
                    array2[j]=array2[j-1];
                }else {
                    break;
                }
            }
            array2[j]=tmp; //前面的序列已經排列ok,將外面的tmp擱到空位上
        }
        return array2;
    }
    public static void BubbleSort(long []  array3){  //氣泡排序
        for(int i=0;i<array3.length-1;i++){ //後面地這個減一加不加不影響結果,但是加上少一次運算。
            for(int j=0;j<array3.length-1-i;j++){
                if(array3[j]>array3[j+1]){
                    long lg=array3[j];
                    array3[j]=array3[j+1];
                    array3[j+1]=lg;
                }
            }
        }
        System.out.println(Arrays.toString(array3));
    }
    public static void shellSort(short [] array4,int gap){  //希爾排序
        for (int i = gap; i <array4.length ; i++) {
            short tmp=array4[i];
            int j;
            for ( j = i-gap; j >=0; j-=gap) {
                if(array4[j]>tmp){
                    array4[j+gap]=array4[j];
                }else {
                    break;
                }
            }
            array4[j+gap]=tmp;
        }

    }
    public static void shell(short [] array4){
        int [] array=new int []{7,3,1};
        for (int i = 0; i <array.length ; i++) {
            int gap=array[i];
            shellSort(array4,gap);
        }
        System.out.println(Arrays.toString(array4));
    }
    public static void main(String [] args){
        int [] array1=new int[]{5,1,8,0,-1}; //選擇排序
        System.out.println(Arrays.toString(SelectionSort(array1)));
        byte[] array2=new byte[]{5,1,8,0,-1};//直接插入排序
        System.out.println(Arrays.toString(InsertSort(array2)));
        long [] array3=new long[]{5,1,8,0,-1}; //氣泡排序
        BubbleSort(array3);
        short[] array4=new short[21];
        for(int i=0;i<array4.length;i++){
            array4[i]=(short)(Math.random()*100);
        }
        shell(array4);
    }
}