java基础-四种排序:选择/冒泡/直接插入/shell

版权声明:中华人民共和国持有版权 https://blog.csdn.net/Fly_Fly_Zhang/article/details/84317653
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);
    }
}

猜你喜欢

转载自blog.csdn.net/Fly_Fly_Zhang/article/details/84317653