常见排序算法

1.快速排序

快速排序使用分治方法,比基准值小的数字放到基准值左面,比基准值大的放到基准值右面;然后分别对基准值左侧、右侧分别使用快速排序;基准值可以随意选择,一般选择第一个或者最后一个数字

  1. 选择基准值
  2. 比基准值小的放到左边,比基准值大的放到右边
  3. 基准值放到空出的位置
  4. 分别对左边和右边使用快速排序
cpp 复制代码
int quick_sort2(vector<int>& nums, int start, int end) {
     if (start >= end) return 0;
     int left = start, right = end;
     int tmp = nums[start];
  
     while(left < right) {
         while (left < right && nums[right] >= tmp) {//寻找小于base的位置
             right--;
         }
         if (right > left) {
             nums[left] = nums[right];
             left++;
         }
         
         
         while (left < right && nums[left] <= tmp) {//寻找大于base的位置
             left++;
         }
         if (left < right) {
             nums[right] = nums[left];
         }
         
    }
    nums[left] = tmp;
    quick_sort2(nums, 0, left - 1);
    quick_sort2(nums, left + 1 ,end);
    
    
    return left;
  
}

void quick_sort(vector<int>& nums) {
    quick_sort2(nums, 0, nums.size() - 1);
}
相关推荐
HugoStudio_SWAN42 分钟前
洛谷 P1420 / P1179 / B4262 最长连号、数字统计与词频统计——统计的三种面孔
c++·学习·程序人生·算法
青 春 记 忆1 小时前
LeetCode 350. 两个数组的交集 II|Python 解法详解
python·算法·leetcode
阳明山水2 小时前
销量预测2025—2026:从模型竞赛到系统融合的范式转型
人工智能·深度学习·算法·机器学习·架构
桐盛科技3 小时前
拒绝“漂绿”风险:基于边缘计算的碳排放数据清洗算法与实时校验逻辑
人工智能·算法·边缘计算
wuyk5553 小时前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试
-dzk-3 小时前
【链表】LC 138.随机链表的复制
数据结构·链表
Tongzhi20263 小时前
通芝科技考勤软件三大发展趋势:AI大模型、无感识别与数据底座
大数据·科技·算法·爬山算法
eBest数字化转型方案3 小时前
Route Optimization for FMCG:多目标排线算法的工程实现
大数据·人工智能·算法
洋不写bug4 小时前
链表补充练习,双链表的模拟实现
java·数据结构·链表·双链表·底层实现
residual_fan4 小时前
持续对比强化学习(Continual Contrastive Reinforcement Learning)论文分享
人工智能·算法·数据挖掘·数据分析