面经整理——算法

排序算法

快排流程

采用分治的思想,对于一组数据,选择一个基准元素(哨兵),通常选择第一个或最后一个元素,通过第一轮扫描,比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);
    }
}
相关推荐
随意起个昵称18 小时前
区间dp-基础题目1(石子合并)
算法·动态规划
吞下星星的少年·-·18 小时前
线段树模板
算法
橙淮18 小时前
并发编程(六)
java·jvm
段一凡-华北理工大学19 小时前
2026 高炉炼铁智能化技术全景与演进路径~系列文章11:演进路径与行业未来
大数据·网络·人工智能·算法·工业智能体·高炉炼铁智能化
拽着尾巴的鱼儿19 小时前
springboot openfeign 自定义feign 接口重试机制
java·spring boot·后端
白露与泡影19 小时前
2026大厂Java面试题大全!牛客网最新版
java·开发语言
叶小鸡19 小时前
小鸡玩算法-力扣HOT100-多维动态规划
算法·leetcode·动态规划
星马梦缘19 小时前
aaaaa
数据结构·c++·算法
EntyIU19 小时前
JVM内存与GC笔记
java·jvm·笔记
OpenApi.cc20 小时前
神经网络结构驱动+数据结构分析
数据结构·人工智能·神经网络