排序算法

Posted optor

tags:

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

印象中,三次面试都被问到了快速排序算法,有的甚至要求当场手写实现,就比如今天下午的转转面试。艰难困苦中,幸好我写出了一个不太正规的冒泡排序。这里就记录下常见的几种排序算法吧!

冒泡排序

/**
 * Created by clearbug on 2018/2/27.
 */
public class Sort {

    public static void main(String[] args) {
        int[] arr = new int[]{49, 38, 65, 97, 76, 13, 27, 49};

        Sort sort = new Sort();
        sort.bubbleSort(arr);
    }

    /**
     * 冒泡排序
     * 
     * 原理:藉助“交换”操作进行排序
     * 时间复杂度:O(n^2)
     * 空间复杂度:O(1)
     * 
     * @param arr 待排序的数组
     */
    public void bubbleSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            boolean sorted = true;
            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;
                    sorted = false;
                }
            }
            if (sorted) {
                break;
            }
        }
    }
}

快速排序

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

算法排序之堆排序

快速排序-递归实现

从搜索文档中查找最小片段的算法?

在第6731次释放指针后双重免费或损坏

TimSort算法分析

以下代码片段的算法复杂度