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

复制代码
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)。
相关推荐
故事和你912 分钟前
洛谷-算法2-2-常见优化技巧3
开发语言·数据结构·c++·算法·深度优先·动态规划·图论
菜鸟555558 分钟前
2025江西省CCPC省赛暨全国邀请赛(南昌)
数据结构·c++·算法·acm·思维·ccpc·xcpc
普修罗双战士12 分钟前
高效使用 Git:从入门到精通的实战指南
java·git
lds走自己的路20 分钟前
全局坐标转局部坐标推导
人工智能·算法·机器学习
wuxinyan12321 分钟前
Java面试题51:一文深入了解K8s 环境下企业级 CI/CD 流水线搭建
java·ci/cd·kubernetes·面试题
琪露诺大湿26 分钟前
网页聊天系统——测试报告
java·软件测试·功能测试·websocket·html·项目·测试报告
杨校27 分钟前
杨校老师课堂之C++高精度乘法
算法
上弦月-编程27 分钟前
C语言位运算:从入门到精通
运维·c语言·开发语言·vscode·算法·leetcode·极限编程
小园子的小菜29 分钟前
生产实战|冷热数据转换:从识别、触发到落地全流程解析
java·开发语言·spring
invicinble33 分钟前
对于线程的思路
java