几种常见的排序算法(java实现)

1. 快速排序 (quickSort)

    public static void quickSort(int[] array,int left,int right){
        if(left>right){
            return;
        }
        int base=array[left];
        int i=left;
        int j=right;
        while(i!=j){
            while(array[j]>=base&&j>i){
                j--;
            }
            while(array[i]<=base&&j>i){
                i++;
            }
            //此时i和j位置元素交换
            int temp=array[i];
            array[i]=array[j];
            array[j]=temp;
        }
        //此时代表i和j以重合,将该位置和base交换
        array[left]=array[i];
        array[i]=base;
        //排右边
        quickSort(array,i+1,right);
        //排左边
        quickSort(array,left,i-1);
    }

2. 希尔排序(shellSort)

 public static void shellSort(int[] array) {
        for (int gap = array.length; gap > 0; gap = gap / 2) {
            for (int i = gap; i < array.length; i++) {
                for (int j = i; j > gap - 1; j=j-gap) {
                    if (array[j] < array[j - gap]) {
                        int temp = array[j];
                        array[j] = array[j - gap];
                        array[j - gap] = temp;
                    }
                }
            }
        }
    }

3. 冒泡排序(bubbleSort)

public static void bubbleSort(int[] array){
        for(int i=0;i<array.length-1;i++){
            for(int j=0;j<array.length-i-1;j++){
                if(array[j+1]<array[j]){
                    int temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
        }
}

4. 选择排序(selectionSort)

public static void selectionSort(int[] array){
    for(int i=0;i<array.length-1;i++){
        int minPos=i;
        for(int j=i+1;j<array.length;j++){
            if(array[minPos]>array[j]){
                minPos=j;
            }
        }
        if(minPos!=i){
            int temp=array[minPos];
            array[minPos]=array[i];
            array[i]=temp;
        }
    }
}

5. 插入排序(insertSort)

public static void insertSort(int[] array){
    for(int i=1;i<array.length;i++){
        for(int j=i;j>0;j--){
            if(array[j]<array[j-1]){
                int temp=array[j];
                array[j]=array[j-1];
                array[j-1]=temp;
            }
        }
    }
}
# Java   排序   算法   数据结构  

评论

公众号:mumuser

企鹅群:932154986

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×