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

复制代码
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)。
相关推荐
zs宝来了6 小时前
HOT100-技巧类型题
数据结构·算法
Ayanami_Reii6 小时前
进阶数据结构-FenwickTree
数据结构·算法·树状数组·fenwick tree
爪哇部落算法小助手6 小时前
每日两题day59
数据结构·c++·算法
h***01546 小时前
SpringBoot 集成 Activiti 7 工作流引擎
java·spring boot·后端
g***78916 小时前
Java语法进阶
java·开发语言·jvm
shayudiandian6 小时前
【Java】接口(Interface)
java
w***4816 小时前
Spring Boot 整合 Druid 并开启监控
java·spring boot·后端
星尘库6 小时前
怎么实现js混淆加密 每隔一段时间 会失效 需要重新加密使用
java·服务器·前端
Brduino脑机接口技术答疑6 小时前
脑机接口数据处理连载(二) 数据源头解析:脑电信号的采集原理与数据特性
人工智能·python·算法·数据分析·脑机接口
白露与泡影6 小时前
Java面试题2025最新、最全、最细(附答案)
java·开发语言