冒泡排序+选择排序+插入排序+希尔排序+快速排序(Java)

冒泡排序+选择排序+插入排序+希尔排序+快速排序(Java)

public class MaoSort {
    public static void main(String args[]){
        int [] nums=new int[20];

        Random r1= new Random();
        for (int i = 0; i <20 ; i++) {
            nums[i] = r1.nextInt(20);
        }

        System.out.println("冒泡排序");
        for (int i = 0; i <nums.length ; i++) {
            System.out.print(nums[i] + ",");
        }
        System.out.println();
        mySort(nums);
        for (int i = 0; i <nums.length ; i++) {
            System.out.print(nums[i] + ",");
        }


        for (int i = 0; i <20 ; i++) {
            nums[i] = r1.nextInt(20);
        }

        System.out.println();
        System.out.println("选择排序");
        for (int i = 0; i <nums.length ; i++) {
            System.out.print(nums[i] + ",");
        }
        System.out.println();
        selectionSort(nums);
        for (int i = 0; i <nums.length ; i++) {
            System.out.print(nums[i] + ",");
        }


        for (int i = 0; i <20 ; i++) {
            nums[i] = r1.nextInt(20);
        }

        System.out.println();
        System.out.println("插入排序");
        for (int i = 0; i <nums.length ; i++) {
            System.out.print(nums[i] + ",");
        }
        System.out.println();
        insertSort(nums);
        for (int i = 0; i <nums.length ; i++) {
            System.out.print(nums[i] + ",");
        }

        for (int i = 0; i <20 ; i++) {
            nums[i] = r1.nextInt(20);
        }

        System.out.println();
        System.out.println("希尔排序");
        for (int i = 0; i <nums.length ; i++) {
            System.out.print(nums[i] + ",");
        }
        System.out.println();
        shellSort(nums);
        for (int i = 0; i <nums.length ; i++) {
            System.out.print(nums[i] + ",");
        }

        for (int i = 0; i <20 ; i++) {
            nums[i] = r1.nextInt(20);
        }

        System.out.println();
        System.out.println("快速排序");
        for (int i = 0; i <nums.length ; i++) {
            System.out.print(nums[i] + ",");
        }
        System.out.println();
        quickSort(nums,0,nums.length-1);
        for (int i = 0; i <nums.length ; i++) {
            System.out.print(nums[i] + ",");
        }


    }
    public static void mySort(int [] nums){
        //冒泡排序
        int k;
        for (int i = 0; i < nums.length; i++) {
            for (int j = 0; j < nums.length-1-i; j++) {
                if(nums[j]<nums[j+1]){
                    k=nums[j];
                    nums[j]=nums[j+1];
                    nums[j+1]=k;
                }
            }
        }
    }
    public static void selectionSort(int [] nums){
        //选择排序
        int minnum;
        int numindex;
        int k;
        for (int i = 0; i < nums.length; i++) {
            minnum=nums[i];
            numindex=i;
            for (int j = i+1; j < nums.length; j++) {
                if(nums[j]<minnum){
                    minnum=nums[j];
                    numindex=j;
                }
            }
            k=nums[i];
            nums[i]=nums[numindex];
            nums[numindex]=k;
        }
    }
    public static void insertSort(int [] nums){
        //插入排序
        int k;
        for (int i = 1; i < nums.length; i++) {
            for (int j = i; j > 0 && nums[j]<nums[j-1]; j--) {
                k=nums[j];
                nums[j]=nums[j-1];
                nums[j-1]=k;
            }
        }
    }

    public static void shellSort(int [] nums){
        //希尔排序
        int k;
        int h=1;
        while(h<nums.length/3) h=3*h+1;
        while(h>=1) {
            for (int i = h; i < nums.length; i++) {
                for (int j = i; j >= h && nums[j] < nums[j - h]; j-=h) {
                    k = nums[j];
                    nums[j] = nums[j - h];
                    nums[j - h] = k;
                }
            }
            h=h/3;
        }
    }



    public static void quickSort(int [] nums, int begin,int end){
        //快速排序
        if(begin>end)
            return;
        int i=begin;
        int j=end;
        int tmp=nums[begin];
        while(i!=j){
            while(i<j && nums[j]>=tmp)
                j--;
            while (i<j && nums[i]<=tmp)
                i++;
            if(i<j){
                int x = nums[i];
                nums[i]=nums[j];
                nums[j]=x;
            }
        }
        //tmp=nums[begin];
        nums[begin]=nums[i];
        nums[i]=tmp;
        quickSort(nums, begin,i-1);
        quickSort(nums, i+1,end);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值