3种O(n∧2)级别的排序,选择排序、冒泡排序、插入排序

时间:2021-06-26 22:07:31
3种O(n∧2)级别的排序,选择排序、冒泡排序、插入排序 
public class Sort {
    private void swap(int[] array,int i,int j){
        int var;
        var =array[i];
        array[i]=array[j];
        array[j]=var;
    }
    //选择排序
    //依次选择出最小或最大放入对应的位置
    public void slectSort(int[] array){
        for (int i = 0; i <array.length ; i++) {
            int min=array[i];
            int index=i;
            for (int j = i+1; j <array.length ; j++) {
                if(array[j]<min){
                    min=array[j];
                    index=j;
                }
            }
            swap(array,i,index);
        }
        print(array);
    }

    //冒泡排序
    //只比较未排序部分
    //比较相邻位置元素大小,交换位置,依次按照大小排序
    public void maopaoSort(int[] array){
        for (int i = 0; i <array.length ; i++) {
            for (int j = array.length-1; j>i; j--) {
                if(array[j]<array[j-1]){
                    swap(array,j,j-1);
                }
            }
        }
        print(array);
    }

    //插入排序
    //将元素插入到有序数组中
    public  void  insertSort(int[] array){
        for (int i = 0; i <array.length ; i++) {
            for (int j = i; j >0 ; j--) {
                if(array[j]<array[j-1]){
                    swap(array,j,j-1);
                }else{
                    continue;
                }
            }
        }
        print(array);
    }

    public void print(int[] array){
        for (int i = 0; i <array.length ; i++) {
            System.out.print(array[i]+" ");
        }
    }

    public static  void  main(String[] arges){
        Sort  s=new Sort();
        int[] array={5,8,6,2,4,3,7,9};
//        s.slectSort(array);
//        s.maopaoSort(array);
//        s.insertSort(array);
    }
}