常见的排序算法

Posted Just DO IT by luckygxf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见的排序算法相关的知识,希望对你有一定的参考价值。

常见排序算法有

1. 选择排序

2. 插入排序

3. 冒泡排序

4. 快速排序

5. 归并排序

这里写了5种排序的java demo,还有很多排序,希尔排序,计数排序,堆排序,基数排序等

Sort.java

public class Sort {
    public static void main(String[] args) {
        int[] arr = {3, 6, 9, 2, 5, 4};
        int[] temp = new int[arr.length];
        mergeSort(arr, 0, arr.length - 1, temp);
//        insertSort(arr);
//        selectSort(arr);
//        bubboSort(arr);
//        quickSort(arr, 0, arr.length - 1);
        for(int i : arr){
            System.out.print(i + ", ");
        }
    }

    public static void mergeSort(int[] array, int start, int end, int[] temp){
        if(start < end){
            int middle = (end + start) / 2;
            mergeSort(array, start, middle, temp);
            mergeSort(array, middle + 1, end, temp);
            mergeArray(array, start, middle, end, temp);

        }

    }

    private static void mergeArray(int[] array, int start, int middle, int end, int[] temp){
        int tempIndex = 0;
        int s = start;
        int m = middle + 1;
        int e = end;

        while(s <= middle && m <= e){
            if(array[s] <= array[m])
                temp[tempIndex ++] = array[s ++];
            else
                temp[tempIndex ++] = array[m ++];
        }
        while(s <= middle)
            temp[tempIndex ++] = array[s ++];
        while(m <= e)
            temp[tempIndex ++] = array[m ++];
        for(int i = 0; i < tempIndex; i++)
            array[start + i] = temp[i];

    }

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

    public static void selectSort(int[] array){
        for(int i = 0; i < array.length; i ++){
            int maxIndex = i;
            for(int j = i + 1; j < array.length; j ++){
                maxIndex = array[maxIndex] < array[j] ? j : maxIndex;
            }
            if(maxIndex != i){
                int temp = array[i];
                array[i] = array[maxIndex];
                array[maxIndex] = temp;
            }
        }
    }

    public static void bubboSort(int[] array){
        boolean isExchanged = true;
        for(int i = array.length - 1; i > 0 && isExchanged; i --){
            isExchanged = false;
            for(int j = 0; j < i; j ++){
                if(j < array.length - 1 && array[j] > array[j + 1]){
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                    isExchanged = true;
                }
            }
        }
    }


    public static void quickSort(int[] array, int l, int r){
        if(l < r){
            int s = l;
            int e = r;
            int pivotValue = array[l];
            while(l < r){
                while(l < r && array[r] > pivotValue){
                    r --;
                }
                if(l < r)
                    array[l ++] = array[r];
                while(l < r && array[l] < pivotValue){
                    l ++;
                }
                if(l < r)
                    array[r --] = array[l];
            } //while
            array[l] = pivotValue;
            quickSort(array, s, l - 1);
            quickSort(array, l + 1, e);
        }

    }
}

 

以上是关于常见的排序算法的主要内容,如果未能解决你的问题,请参考以下文章

基于比较的七种常见排序算法

基于比较的七种常见排序算法

常见排序算法

算法 | Java 常见排序算法(纯代码)

hadoop的mapreduce常见算法案例有几种

数据结构(Java)——No4.常见的排序算法