当前位置: 首页 > news >正文

数据结构、刷leetcode返航版--二分5/7

1.排序

快排:

第一章 基础算法(一) - AcWing

如何调整范围

经典二分

递归结束条件;条件满足时,进行处理;递归左边,递归右边

分界点划分可以是l,r,(l+r)/2,但是如果是选l,比如是1,2排序,i最后结束循环是1,然后最后递归也是sort(q,0,0)

其实有太多问题:>=和>的选择,要不要判断i<j,递归使用i,i-1还是j,j+1【前一个超时了】,先这样吧,想不通。。。。。?????

模版:

void sort(vector<int>&nums,int l,int r){//感觉情况有点多啊
    if(l>=r){
        return;
    }
    int i = l-1;
    int j = r+1;
    int x = nums[(l+r)/2];
    while(i<j){
        do{
            i++;
        }while(nums[i]<x);//不是<=,如果=x应该让他放在中间 
        do{
            j--;
        } while(nums[j]>x);//不是<=
        if(i<j) swap(nums[i],nums[j]);//必须i<j
    }//i>=j j,i
    sort(nums,l,i-1);
    sort(nums,i,r);
}
 

#include<iostream>
#include<algorithm>
using namespace std;// 5
// 3 1 2 4 5
//
// void sort(vector<int>&nums,int l,int r){//二分
//     if(l>=r){
//         return;
//     }//     int i = l;
//     int j = r;//两个指针
//     int x = nums[(l+r)/2];//避免死循环
//     cout<<"I:"<<i<<"j:"<<j<<endl<<"x"<<x;
//     while(i<j){//
//         while(nums[i]<=x){
//             i++;// 可能导致 i 越界
//         }
//         while(nums[j]>=x){
//             j--;// 可能导致 j 越界
//         }
//         swap(nums[i],nums[j]);// 交换后未移动指针
//     }//结束:i>=j
//     sort(nums,l,i-1);
//     sort(nums,i,r);// }
void sort(vector<int>&nums,int l,int r){//感觉情况有点多啊if(l>=r){return;}int i = l-1;int j = r+1;int x = nums[(l+r)/2];while(i<j){do{i++;}while(nums[i]<x);//不是<=,如果=x应该让他放在中间// do { i++; } while (nums[i] < x); do{j--;} while(nums[j]>x);//不是<=if(i<j) swap(nums[i],nums[j]);//必须i<j}//i>=j j,isort(nums,l,i-1);sort(nums,i,r);
}int main(){int num;cin>>num;vector<int>vec(num);for(int i=0;i<num;i++){cin>>vec[i];// cout<<vec[i];}sort(vec,0,num-1);//num-1for(int s:vec){cout<<s<<" ";}
}

冒泡排序:
每一次把max数放到最后一位

void bubble_sort(int q[], int n) {
    bool flag = true;
    while (flag) {
        flag = false;
        for (int i = 1; i < n; i++) {
            if (q[i] > q[i + 1]) {
                flag = true;
                int t = q[i];
                q[i] = q[i + 1];
                q[i + 1] = t;
            }
        }
    }
}

2、搜索插入位置

手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_哔哩哔哩_bilibili

迷茫了11/49

---------------------------------------------

相关文章:

  • C++ 的未来趋势与挑战:探索新边界
  • 【hot100】bug指南记录1
  • 在 Ubuntu 中配置 Samba 实现「特定用户可写,其他用户只读」的共享目录
  • Spring AI(1)—— 基本使用
  • MVCC机制
  • base64与图片的转换和预览
  • Selenium Web自动化测试学习笔记(二)--八大元素定位
  • 追踪大型语言模型的思想(下)(来自针对Claude的分析)
  • Yii2.0 模型规则(rules)详解
  • ntdll!CsrServerApiRoutine函数--csrsrv!CsrCallServerFromServer什么时候被调用?
  • 2025.05.07-华为机考第二题200分
  • 动态规划之花园
  • 高并发内存池(一):项目简介+定长内存池的实现
  • C25-数组应用及练习
  • iTwin 数据报表(只是简单的原型不代表实现)
  • 解决 TimeoutError: [WinError 10060] 在 FramePack项目中连接 Hugging Face 超时的问题
  • ​​阿里云服务器:数字世界的“基因剪刀”与未来实验室​
  • 联想Horizon 2系列电脑 参数
  • C++面向对象 继承
  • python安装pyqt5失败
  • 马云再次现身阿里打卡创业公寓“湖畔小屋”,鼓励员工坚持创业精神
  • 西安机场回应航站楼“水帘洞”事件:屋面排水系统被冰雹堵塞
  • 中消协点名新能源汽车行业:定金退款争议频发
  • 澎湃研究所“营商环境研究伙伴计划”启动
  • 加力、攻坚、借力、问效,上海为优化营商环境推出增量举措
  • 数据中心业务今年预增50%,丹佛斯:中国是全球最重要的市场