常见排序算法

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);
}
相关推荐
LYFlied19 小时前
【每日算法】LeetCode 153. 寻找旋转排序数组中的最小值
数据结构·算法·leetcode·面试·职场和发展
唐装鼠19 小时前
rust自动调用Deref(deepseek)
开发语言·算法·rust
ytttr87320 小时前
MATLAB基于LDA的人脸识别算法实现(ORL数据库)
数据库·算法·matlab
jianfeng_zhu1 天前
整数数组匹配
数据结构·c++·算法
yueqingll1 天前
032、数据结构之代码时间复杂度和空间复杂度的判断:从入门到实战
数据结构
smj2302_796826521 天前
解决leetcode第3782题交替删除操作后最后剩下的整数
python·算法·leetcode
LYFlied1 天前
【每日算法】LeetCode 136. 只出现一次的数字
前端·算法·leetcode·面试·职场和发展
唯唯qwe-1 天前
Day23:动态规划 | 爬楼梯,不同路径,拆分
算法·leetcode·动态规划
做科研的周师兄1 天前
中国土壤有机质数据集
人工智能·算法·机器学习·分类·数据挖掘
来深圳1 天前
leetcode 739. 每日温度
java·算法·leetcode