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

复制代码
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)。
相关推荐
瓯雅爱分享4 分钟前
Java+Vue构建的采购招投标一体化管理系统,集成招标计划、投标审核、在线竞价、中标公示及合同跟踪功能,附完整源码,助力企业实现采购全流程自动化与规范化
java·mysql·vue·软件工程·源代码管理
mit6.8242 小时前
[C# starter-kit] 命令/查询职责分离CQRS | MediatR |
java·数据库·c#
诸神缄默不语3 小时前
Maven用户设置文件(settings.xml)配置指南
xml·java·maven
任子菲阳3 小时前
学Java第三十四天-----抽象类和抽象方法
java·开发语言
学Linux的语莫3 小时前
机器学习数据处理
java·算法·机器学习
找不到、了3 小时前
JVM的即时编译JIT的介绍
java·jvm
earthzhang20214 小时前
【1007】计算(a+b)×c的值
c语言·开发语言·数据结构·算法·青少年编程
西瓜er4 小时前
JAVA:Spring Boot 集成 FFmpeg 实现多媒体处理
java·spring boot·ffmpeg
你总是一副不开心的样子(´ . .̫ .4 小时前
一、十天速通Java面试(第三天)
java·面试·职场和发展·java面试
迎風吹頭髮4 小时前
UNIX下C语言编程与实践63-UNIX 并发 Socket 编程:非阻塞套接字与轮询模型
java·c语言·unix