实现一个快速排序算法,并分析算法的时间复杂度。

复制代码
public class Test_A30 {
    public void quickSort(int[] arr,int low,int hight){
        if(low<hight){
            int pivot=partition(arr,low,hight);
            quickSort(arr,low,pivot-1);
            quickSort(arr,pivot+1,hight);

        }
    }
    private int partition(int[] arr,int low,int high){
        int pivot=arr[high];
        int i=low-1;
        for(int j=low;j<high;j++){
            if(arr[j]<pivot){
                i++;
                int temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
        int temp=arr[i+1];
        arr[i+1]=arr[high];
        arr[high]=temp;
        return i+1;
    }
    public static void main(String[] args){
        Test_A30 test_30=new Test_A30();
        int[] arr={24,6,87,23,1,45};
        test_30.quickSort(arr,0,arr.length-1);
        for(int num:arr){
            System.out.println(num+"");
        }
    }
}
复制代码
时间复杂度分析:

在最好情况下,每次划分时都能将数组均匀地划分为两个部分,此时时间复杂度为O(nlogn)。
在最坏情况下(每次划分都只将数组中的一个元素放到正确位置),时间复杂度为O(n^2)。
平均时间复杂度为O(nlogn)。
相关推荐
捕风捉你3 分钟前
观察者模式在金融业务中的应用及其框架实现
java·开发语言·观察者模式
杨侨治5 分钟前
Web后端开发概述&环境搭建&项目创建&servlet生命周期
java·笔记·学习·servlet·java基础·javaee
游王子44 分钟前
Springboot与xxl-job
java·spring boot·后端
✿ ༺ ོIT技术༻1 小时前
BFS:队列+树的宽搜
c++·算法·宽度优先
秋刀prince1 小时前
【JD-GUI】MacOS 中使用Java反编译工具JD-GUI
java·macos·策略模式
青云交1 小时前
Java面试题--JVM大厂篇之G1 GC的分区管理方式如何减少应用线程的影响
java·垃圾回收器(gc)的性能·区域划分(region)·并行和并发回收·区域优先回收·可预测的停顿时间·jvm算法
点云侠2 小时前
SARscape——多视滤波
开发语言·人工智能·算法·计算机视觉
codefly-xtl2 小时前
探索 Java 8 中的 Stream API
java
Jack_hrx2 小时前
在 Java 中从 for 循环中移出元素的原理及解决方案
java·循环·for循环·数组下标越界
科学的发展-只不过是读大自然写的代码2 小时前
qt 读写json格式的文件应用举例 工具函数
java·qt·json