快速排序的代码实例

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

正文


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)。快速排序是递归进行的,递归需要栈的辅助,因此它需要的辅助空间较多。


相关文章
|
4月前
|
搜索推荐 Java 索引
快速排序的新用法
快速排序的新用法
27 0
|
4月前
|
搜索推荐 Java
java实现冒泡排序和快速排序代码
java实现冒泡排序和快速排序
24 1
|
4月前
|
算法 Java C++
归并排序代码实现
归并排序代码实现
15 0
|
5月前
|
JavaScript 搜索推荐 前端开发
JS数组自定义排序方法,冒泡排序、插入排序、选择排序和快速排序。
JS数组自定义排序方法,冒泡排序、插入排序、选择排序和快速排序。
33 0
|
9月前
堆排序代码
堆排序代码
|
10月前
|
算法 搜索推荐
【排序算法】5行代码实现冒泡排序
【排序算法】5行代码实现冒泡排序
|
10月前
|
算法 搜索推荐
快速排序的初识(附C代码)
今天看了一则关于排序算法中的快速排序。我将用自己的语言结合代码描述一下这个算法!
34 2