常用的排序算法

package alg.com.sort;
public class Sort {
    public static void main(String[] args) {
        int[] datas = {9,1,4,3,5,6,7,2,8};
        //Sort.insert(datas);
        //Sort.bubbling(datas);
        //Sort.quick(datas,0,datas.length-1);
        Sort.select(datas);
        for(int data:datas){
            System.out.println(data);
        }
    }

    //直接插入排序 O(n^2)
    public static void insert(int[] datas){
        for(int i=1;i<datas.length;i++){
            int temp = datas[i];
            int flag = i;
            for(int j=i-1;j>-1;j--){
                if(temp<datas[j]){
                    datas[j+1] = datas[j];
                    flag = j;
                }
            }
            datas[flag] = temp;
        }
    }

    //冒泡排序O(n^2)
    public static void bubbling(int[] datas){
        boolean flag = true;
        int temp = 0;
        for(int i=0;i<datas.length;i++){
            flag = true;
            for(int j=datas.length-1;j>i;j--){
                if(datas[j-1]>datas[j]){
                    flag = false;
                    temp = datas[j-1];
                    datas[j-1] = datas[j];
                    datas[j] = temp;
                }
            }
            if(flag){
                break;
            }
        }
    }

    //快速排序O(nlogn)
    public static void quick(int[] datas,int low,int high){
        int start = low;
        int end = high;
        int key = datas[low];
        while(start<end){
            while(end>start && datas[end]>key)
                end--;
            if(datas[end]<=key){
                int temp = datas[end];
                datas[end] = key;
                key = temp;
            }
            while(end>start && datas[start]<key){
                start++;
            }
            if (datas[start] >= key) {
                int temp = datas[start];
                datas[start] = key;
                key = temp;
            }
        }
        if(start>low)
            quick(datas,low,start-1);
        if(end<high)
            quick(datas,end+1,high);
    }

    //选择排序O(n^2)
    public static void select(int[] datas){
        for(int i=0;i<datas.length;i++){
            int flag = i;
            for(int j=i+1;j<datas.length;j++){
                if(datas[j]<datas[flag]){
                    flag = j;
                }
            }
            int temp = datas[i];
            datas[i] = datas[flag];
            datas[flag] = temp;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值