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

复制代码
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)。
相关推荐
忆~遂愿7 分钟前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds17 分钟前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化
仟濹18 分钟前
【Java基础】多态 | 打卡day2
java·开发语言
孞㐑¥18 分钟前
算法——BFS
开发语言·c++·经验分享·笔记·算法
Re.不晚19 分钟前
JAVA进阶之路——无奖问答挑战2
java·开发语言
月挽清风23 分钟前
代码随想录第十五天
数据结构·算法·leetcode
XX風40 分钟前
8.1 PFH&&FPFH
图像处理·算法
NEXT061 小时前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法
Ro Jace1 小时前
计算机专业基础教材
java·开发语言
代码游侠1 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法