时间复杂度

常用的排序算法的时间复杂度和空间复杂度:

排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度
冒泡排序 O(n2) O(n2) 稳定 O(1)
快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n)
选择排序 O(n2) O(n2) 稳定 O(1)
二叉树排序 O(n2) O(n*log2n) 不一定 O(n)
插入排序 O(n2) O(n2) 稳定 O(1)
堆排序 O(n*log2n) O(n*log2n) 不稳定 O(1)
希尔排序 O O 不稳定 O(1)

O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n)

JAVA排序算法_第1张图片

快速排序
转载:https://blog.csdn.net/qq_26122557/article/details/79458649

思想:以第一个数字为基准数,小于基准数的放左边,大于基准数的放右边,
设定j从右边查找小于基准数的数字,然后设定i从左边查找大于基准数的数字,交换i,j数字,直至j=i,交换j和基准数字。
然后基准数字左右两边分别递归上述方法。

public class QuickSort {
public static void quickSort(int[] arr,int low,int high){
int i,j,temp,t;
if(low>high){
return;
}
i=low;
j=high;
//temp就是基准位
temp = arr[low];

    while (i=arr[i]&&i

}

参考:
https://just4java.iteye.com/blog/2276352
https://baijiahao.baidu.com/s?id=1614358097594030962&wfr=spider&for=pc