【680、常见的排序算法,快排原理、时间复杂度和空间复杂度。】

779 阅读1分钟

常见的排序算法有冒泡排序、选择排序、插入排序、希尔排序、归并排序和快速排序等。其中,快速排序是一种常用的基于比较的排序算法,其原理是通过选取一个基准元素,将数组分为左右两个子数组,将小于基准元素的元素放到左边,大于基准元素的元素放到右边,再递归对左右两个子数组进行排序,最终得到一个有序的数组。

快排的时间复杂度为O(nlogn),最坏情况下为O(n^2)。在最优情况下,每次划分的子数组大小都为原数组大小的一半,递归深度为log2(n),时间复杂度为O(nlogn);在最坏情况下,每次划分只能得到一个比原数组小1的子数组和一个空子数组,递归深度为n,时间复杂度为O(n^2)。

快排的空间复杂度为O(logn)~O(n),主要取决于递归栈的深度。在最优情况下,递归深度为log2(n),空间复杂度为O(logn);在最坏情况下,递归深度为n,空间复杂度为O(n)。