java里面的四种排序

1.冒泡排序

public class demo4{
    //冒泡排序
    public static void main (String[]args){
        
        int[ ]arr = {8,4,2,1,23,344,12};
        //输入每一行.arr.length表示上面的数组.减一是因为数组是从0开始的.
        for(int rt = 0 ;rt < arr.length-1;rt++){
            //输入每一列的值.arr.length-1-rt就是按每一列递减.行数不变
            for(int lie = 0;lie<(arr.length-1)-rt;lie++){
                //将数组里面的进行大小对比
            if(arr[lie]<arr[lie+1]){
                //定义一个空值.如果后面的比前面的的大就进行调换位置
                int temp = arr[lie];
                arr[lie]=arr[lie+1];
                arr[lie+1]=temp;
                }
            }
            //进行循环输出对比结束后的值进行排序
        }for(int i=0;i<arr.length;i++){
                System.out.print(arr[i]+"--------");
            }    
        
    }
}

2.选择排序

public class demo9{
    
    public static void main (String[]args){
        //一个数组的数
        
        int[]arr={8,4,2,1,23,344,12};
        //输入一行的数
        
        for(int i =0;i<arr.length-1;i++){
            //定义要对比的数-1是数组i;//表示对比的数
            int max =0;//假设0位是最从0开始-i表示对比数组的每一个
            int last = arr.length-1-i;//最后一位数
            for(int j = 0;j<arr.length-i;j++){
            //定义一行的数    
            if(arr[max]<arr[j]){//对比出一列对大的数等于max
                max=j;
            }if(max!=last){//表示没必要和自身去对比
            int temp = arr[max];
            arr[max]=arr[last];
            arr[last]=temp;    
            }
            }
        }for(int i=0;i<arr.length;i++){
        System.out.print(arr[i]+"--------");}
        
    }

3.插入排序

public class demo10{
//插入排序    
    public static void main (String[]args){
        int []arr={8,4,2,1,23,344,12};
        for(int a = 0;a<arr.length-1;a++){
            //获取要判断的那个数8.4
            int curr = arr[a+1];
            //直角真三角形,从第二个数和前一个数进行比较.
            for(int j=a;j<=a;j--){
                //如果获取要判断的那个数小于行里面的数wei
                if(curr<arr[j]){
                    //如果对比的值小于判断的那个则不换位置
                    arr[j+1]=arr[j];
                }else{
                    break;
                }
                arr[j]=curr;
            } //如果对比的那个值大于判断的那个值那么更换位置
        }for(int i=0;i<arr.length;i++){
                System.out.print(arr[i]+"--------");
        }
    }

4.希尔排序

public class demo11{
    
    public static void main (String[]args){
        int[]arr={8,4,2,1,23,344,12};
        //分组插入
        //首先计算步长 arr.length/2 [8,1,12][4,23][4.322]
        //分组排序[1.8.12][4,23][4.322]
        //计算步长/2  
        //计算步长
        for(int jump= arr.length/2;jump>0;jump/=2){
            //从每组第二个数开始
            //做一个步长区间进行比较
            //多少取决于步长
            for(int i = jump;i<arr.length;i++){
                //去除每组第二个数
                int value = arr[i];
                //小组中数据循环交换
                
                int j;
                for(j=i-jump;j>=0&&value>arr[j];j-=jump){
                 arr[j+jump]=arr[j];    
                }
                arr[j+jump]=value;
            }
            
        }for(int i=0;i<arr.length;i++){
                System.out.print(arr[i]+"--------");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值