快速排序的代码实例

简介: 快速排序是排序算法之一,面试题里面经常会考到手写快速排序算法。

正文


01代码实例


/**
 * @date : 2019/03/29
 */
public class QuickSort {
    public static void main(String[] args) {
        int[] array = {3, 0, 7, 19, 4, 10, 7, 6, 11};
        quickSort(array, 0, array.length-1);
        for (int item : array) {
            System.out.println(item);
        }
    }
    public static void quickSort(int array[], int start, int end) {
        int i = start;
        int j = end;
        if (start >= array.length)
            return;
        if (end <= 0)
            return;
        int temp = array[start];
        if (start >= end)
            return;
        while (i != j) {
            while (i < j && array[j] >= temp)
                j--;
            if (j > i)
                array[i] = array[j];
            while (i < j && array[i] <= temp)
                i++;
            if (i < j)
                array[j] = array[i];
        }
        array[i] = temp;
        quickSort(array, start, i - 1);
        quickSort(array, i + 1, end);
    }
}


02性能分析


(1)时间复杂度分析

快速排序最好情况下的时间复杂度为O(nlogn),待排序列越接近无序,本算法效率越高。最坏情况下的时间复杂度为O(n2),待排序列越接近有序,本算法效率越低。平均时间复杂度为O(nlogn)。就平均时间而言,快速排序是所有排序算法中最好的。快速排序的排序趟数与初始序列有关。

(2)空间复杂度分析

本算法空间复杂度为O(logn)。快速排序是递归进行的,递归需要栈的辅助,因此它需要的辅助空间较多。


相关文章
|
5月前
|
算法 搜索推荐 Java
JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)
JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)
34 0
|
6月前
|
搜索推荐 Java
java实现冒泡排序和快速排序代码
java实现冒泡排序和快速排序
52 1
|
6月前
|
搜索推荐 Java 索引
快速排序的新用法
快速排序的新用法
43 0
|
6月前
|
算法 Java C++
归并排序代码实现
归并排序代码实现
30 0
|
算法 搜索推荐
【排序算法】5行代码实现冒泡排序
【排序算法】5行代码实现冒泡排序
|
机器学习/深度学习 算法 搜索推荐
【排序算法】冒泡排序,选择排序,插入排序算法原理及Python代码实现
【排序算法】冒泡排序,选择排序,插入排序算法原理及Python代码实现
|
算法 搜索推荐 Java
排序:Java实现冒泡排序原理及代码注释详解
排序:Java实现冒泡排序原理及代码注释详解
127 0
排序:Java实现冒泡排序原理及代码注释详解
|
算法 搜索推荐 Java
排序:Java实现快速排序原理及代码注释详解
排序:Java实现快速排序原理及代码注释详解
140 0
排序:Java实现快速排序原理及代码注释详解
|
搜索推荐 算法 Java
排序:Java实现选择排序原理及代码注释详解
排序:Java实现选择排序原理及代码注释详解
151 0
排序:Java实现选择排序原理及代码注释详解