Java排序算法

插入排序算法

public class insert_sort {

    public static void insert(int[] data){
        System.out.println("开始排序:");
        for(int i=1;i<data.length;i++){
            int temp=data[i];
            if(data[i]<data[i-1]){
                int j=i-1;
                for(;j>=0&&data[j]>temp;j--){
                    data[j+1]=data[j];
                }
                data[j+1]=temp;
            }
            System.out.println(java.util.Arrays.toString(data));
        }

    }

    public static void main(String args[]){
        int[] arr=new int[]{123,234,21,56,32,76,4,22};
        System.out.println("pre sort:"+java.util.Arrays.toString(arr));
        insert(arr);
        System.out.println("post sort:"+java.util.Arrays.toString(arr));
    }
}

二分插入排序

public class Binsert_sort {
    public static void Binsert(int[] arr){
        System.out.println("开始排序");
        for(int i=1;i<arr.length;i++){
            int low=0;//二分法最左端和最右端
            int high=i-1;
            int temp=arr[i];
            while (low<=high){
                int mid=(low+high)/2;//折半
                if(temp<arr[mid]){
                    high=mid-1;
                }
                else{
                    low=mid+1;
                }
            }
//            for(int j=i;j>high;j--){    //错误代码
//                arr[j+1]=arr[j];
//            }
//            arr[high+1]=temp;
            for (int j = i; j > low; j--) {
                arr[j] = arr[j - 1];
            }
            arr[low] = temp;
            System.out.println(java.util.Arrays.toString(arr));
        }
    }

    public static void main(String[] args){
        int[] arr=new int[]{9,2,4,6,12,65,7,21};
        System.out.println("排序前"+java.util.Arrays.toString(arr));
        Binsert(arr);
        System.out.println("排序后"+java.util.Arrays.toString(arr));


    }
}

最后插入部分自己写的代码有错误,将成功代码替换过来可以运行,暂时记录一下思考错误原因。

希尔排序

public class shellSort {
    public static void shell(int[] a){
        int h=a.length;
        while(h!=0){
            h=h/2;
            for(int i=0;i<h;i++){
                for(int j=i+h;j<a.length;j+=h){
                    int k=j-h;
                    int temp=a[j];
                    while (k>=0&&temp<a[k]){
                        a[k+h]=a[k];
                        k-=h;
                    }
                    a[k+h]=temp;
                }
            }
        }
    }

    public static void main(String[] args){
        int[] arr=new int[]{9,2,4,6,12,65,23,56,7,21,13};
        System.out.println("排序前"+java.util.Arrays.toString(arr));
        shell(arr);
        System.out.println("排序后"+java.util.Arrays.toString(arr));

    }
}

简单选择排序

public class selectSort {
    public static void select(int a[]){
        int min;
        for(int i=0;i<a.length;i++){
            min=a[i];
            int position=i;
            for(int j=i+1;j<a.length;j++){
                if(a[j]<min){
                    min=a[j];
                    position=j;
                }
            }
            a[position]=a[i];
            a[i]=min;
        }
    }

    public static void main(String[] args){
        int[] arr=new int[]{9,2,4,6,12,65,23,56,7,21,13};
        System.out.println("排序前"+java.util.Arrays.toString(arr));
        select(arr);
        System.out.println("排序后"+java.util.Arrays.toString(arr));
    }
}

冒泡排序算法

public class pop_sort {
    public static void  main(String args[]){
       int arr[]=new int[]{3,7,2,4,67,1,5};
       for(int i=0;i<arr.length;i++) {
           for(int j=0;j<arr.length-1-i;j++){
               if(arr[j]>arr[j+1]){
                   int temp=arr[j];
                   arr[j]=arr[j+1];
                   arr[j+1]=temp;
               }
           }
       }
       for(int i=0;i<arr.length;i++){
           System.out.print(arr[i]+"\t");
       }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值