面经整理——算法

排序算法

快排流程

采用分治的思想,对于一组数据,选择一个基准元素(哨兵),通常选择第一个或最后一个元素,通过第一轮扫描,比base小的元素都在base左边,比base大的元素都在base右边,再有同样的方法递归排序这两部分,直到序列中所有数据均有序为止。

如,选取下标为0的元素作为哨兵,r=num.size()-1, 首先移动r找到比哨兵小的元素,将r当前指向的元素放到l所在位置。

然后移动l找到大于等于哨兵的位置,替换r所在的位置。

依次交替,知道l与r相遇,将相遇位置赋予哨兵的值。

然后左右两侧递归。

java 复制代码
class Solution {
    public int[] sortArray(int[] nums) {
        quickSort(nums, 0, nums.length-1);
        return nums;
    }
    void quickSort(int[] nums, int l, int r){
        if(l>=r){
            return;
        }
        int base = nums[l];
        int ll=l, rr=r;
        while(l<r){
            while(l<r&&nums[r]>=base){
                r--;
            }
            nums[l] = nums[r];
            while(l<r&&nums[l]<base){
                l++;
            }
            nums[r] = nums[l];
        }
        nums[l] = base;
        quickSort(nums, ll, l-1);
        quickSort(nums, l+1, rr);
    }
}
相关推荐
夏日听雨眠2 分钟前
数据结构(循环队列)
数据结构·算法·链表
老马95277 分钟前
opencode7-桌面应用实战2
java·人工智能·后端
平行侠7 分钟前
30MacLaren-Marsaglia算法故事文件
数据结构·算法
灵动小溪15 分钟前
claude code工具PC安装部署
人工智能·算法
李白的天不白16 分钟前
大规模请求数据并发问题
java·前端·数据库
智慧物业老杨41 分钟前
智慧物业数智化转型实战:从工单响应到业主满意度的闭环构建
java·开发语言
Kiling_070443 分钟前
Java集合框架:List集合详解与应用
java·开发语言·windows
极客先躯1 小时前
高级java每日一道面试题-2025年12月08日-实战篇[Docker]-如何为 Docker 配置代理?如何为容器配置代理?
java·docker·代理配置的双层架构·docker 守护进程配置代理·为容器配置代理·构建时环境变量·运行时注入环境变量
Asa121381 小时前
Nature Microbiology|跨微生物界菌株水平传播推断的新算法TRACS
算法
csdn2015_1 小时前
java springboot 文件导入,判断第一列的值是否有重复
java·windows·spring boot