算法基础课
创始人
2025-05-30 17:21:08

算法基础课

第一章 基础算法(一)

1.快速排序——分治[O(n logn)]

①确定分界点:q[l]、q[(l+r)/2]、q[r] 、随机

②调整区间,小于x的放在x左端(无序),大于的放在右边(无序),等于左右都可

③递归处理左右两端(重复1 2,对左右两端各自继续分治)

模板:

cpp(785):

#includeusing namespace std;const int N = 1e6 + 10;int n;
int q[N];void quick_sort(int q[], int l, int r)
{if (l >= r) return;int x = q[l], i = l - 1, j = r + 1;while (i < j){do i++; while (q[i] < x);do j--; while (q[j] > x);if (i < j) swap(q[i], q[j]);}quick_sort(q, l ,j);quick_sort(q, j+1, r);
}int main()
{scanf("%d", &n);for (int i = 0; i < n; i++) scanf("%d", &q[i]);quick_sort(q, 0, n-1);for (int i = 0; i < n; i++) printf("%d", q[i]);return 0;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RHpbfIA0-1679153945958)(D:\照片\typora笔记\算法基础课\快速排序.png)]

2.归并排序[O(n logn)]

①确定分界点 mid = ( l + r ) / 2

②递归排序

③归并——合二为一

模板(787):

#include using namespace std;const int N = 1e5 + 10;int a[N], tmp[N];void merge_sort(int q[], int l, int r)
{if (l >= r) return;int mid = l + r >> 1;merge_sort(q, l, mid), merge_sort(q, mid + 1, r);int k = 0, i = l, j = mid + 1;while (i <= mid && j <= r)if (q[i] <= q[j]) tmp[k ++ ] = q[i ++ ];else tmp[k ++ ] = q[j ++ ];while (i <= mid) tmp[k ++ ] = q[i ++ ];while (j <= r) tmp[k ++ ] = q[j ++ ];for (i = l, j = 0; i <= r; i ++, j ++ ) q[i] = tmp[j];
}int main()
{int n;scanf("%d", &n);for (int i = 0; i < n; i ++ ) scanf("%d", &a[i]);merge_sort(a, 0, n - 1);for (int i = 0; i < n; i ++ ) printf("%d ", a[i]);return 0;
}

3.二分查找

关于二分模板问题
1)
一个mid = (l+r)>>1
一个mid = (l+r+1)>>1
加不加1 完全取决于 l = mid 还是r = mid
l等于mid时必须+1向上取整 不然会陷入l=l的死循环
r = mid 时候不用加1 因为下一步l = r 直接会退出循环
2)
这两个模板解决的是 找>=||<=||>||< 某个数的
最左或最右的位置 但这个数不一定在二分的数组中
如果在就能准确找到
如果不在 找到的就是最接近答案的数(你要找大于等于5的第一个数)但
数组中没有5 那找到的就是6的位置(如果有6的话)
所以二分是一定有答案的
我觉得这个二分模板就是解决了我上面说的(>=||<=||>||< )这四种情况

模板(789):

#include using namespace std;const int N = 100010;int n, m;
int q[N];int main()
{scanf("%d%d", &n, &m);for (int i = 0; i < n; i++) scanf("%d", &q[i]);while (m--){int x;scanf("%d", &x);int l = 0,r = n - 1;while (l < r){int mid = l + r >> 1;if (q[mid] >= x) r = mid;else l = mid + 1;}if (q[l] != x) cout << "-1 -1" << endl;else{cout << l << ' ';int l = 0, r = n - 1;while (l < r){int mid = l + r + 1 >> 1;if (q[mid] <= x) l = mid;else r = mid - 1;}cout << l << endl;}}return 0;
}

浮点(790):

#includeusing namespace std;int main()
{double x;cin >> x;double l = -100, r = 100;while (r - l > 1e-8){double mid = (l + r) / 2;if (mid * mid * mid >= x) r = mid;else l = mid;}printf("%.6lf\n", l);return 0;
}

l > 1e-8)
{
double mid = (l + r) / 2;
if (mid * mid * mid >= x) r = mid;
else l = mid;
}

printf("%.6lf\n", l);return 0;
}

相关内容

热门资讯

UNIX网络编程_socket... 这篇笔记记录什么socket的认识。 1 什么是socket socket可以看成是用户进程与内核网...
centos yum安装英伟达... 背景 最近在研究一个AI项目,需要用到英伟达显卡训练模型,centos默...
易华录拟5亿元向电科投资转让国... 易华录(300212)今日公告,公司拟以非公开协议转让方式向中电科投资控股有限公司(以下简称“电科投...
兰德链金科技有限公司发布数字黄... 在数字金融持续演进、资产信任机制面临重构的背景下,兰德链金科技有限公司(RandChain Gold...
第四章 需求弹性和供给弹性分析 需求弹性 需求弹性:一种商品的需求量对其影响因素变动的反应敏感程度;通...
夏春:大国博弈正在深刻改变全球... 夏春 系上善资本首席经济学家、中国首席经济学家论坛理事5月23日,北京大学经济学院上海校友会、复旦大...
【id:11】【20分】D. ... 题目描述 输入一个2*3的矩阵,将这个矩阵向左旋转90度后输出 比如现在有2*3矩阵...
学习Docker?一篇足以 文章目录 Docker介绍Docker优缺点容器化DockerfileDocker常用命令Docke...
赵伟:财政“前置”后该关注什么... 赵伟 贾东旭 侯倩楠(赵伟系申万宏源证券首席经济学家、中国首席经济学家论坛理事)摘要财政债务融资和支...
股价连创新高,成都银行杭州银行... 出品|达摩财经5月30日,A股三大指数下跌,银行板块逆势上涨,除了招商银行、上海银行、兴业银行,其余...
芦哲:老龄化进程下的消费变迁和... 芦哲李昌萌(芦哲系东吴证券首席经济学家、中国首席经济学家论坛成员)核心观点我国人口老龄化进程有所加速...
云桌面技术哪家强?亲身体验后才... 一. 简介 作为一家领先的云计算服务提供商,华为云提供了丰富的云计算服务,...
第一章 信息化知识 1、信息是客观事物状态和运动特征的一种普遍形式,信息的概念存在两个基本的层次ÿ...
高数重点总结 高数 公式不要去死记 配合训练题在训练中记忆 完成一下这些题目 高中函数图像回忆 与其记忆各种公式不...
手动创建数据集(csv文件),... 文章目录基础知识创建多级目录多级路径拼接打开文件并对文件进行读写创建CSV数据集的简单例子 基础知识...
特朗普宣布将把进口钢铁关税提至... 每经编辑|张锦河 据央视新闻,当地时间5月31日,欧盟委员会在一份声明中对美国宣布提高进口钢铝关税...
17万字 JUC 看这一篇就够... 今天我们继续来学习Java并发编程 Juc框架 ,把剩余部分学习完 17万字 JUC...
Python(白银时代)——继... 单继承 面向对象的三大特性 封装 根据 职责 将属性和方法封装到一个抽象类中 继承 实现代码的重...
03 dubbo源码学习_服务... 1. 服务暴露1.1 服务本地暴露1.2 服务远程暴露1.2.1 导出服务1.2.1.1 开启net...
外贸网站seo产品越多越好吗?... 外贸网站seo产品越多越好吗? 答案:是的。 没有一个搜索引擎不喜欢大量...
centos7安装mysql5... 目录1.下载mysql5.7的rpm安装包2.上传mysql安装包到centos7的系统下3.安装依...
蓝桥杯算法基础_排它平方数_课... 题目 203879 * 203879 = 41566646641 这有什么神奇呢࿱...
Tomcat自定义的端口查不到... 昨天再维护一个老项目的时候遇到一个很奇葩的问题,服务正常启动,日志正常输...
CSC访学、博士后、联培选择国... 2023年国家留学基金委(CSC)公派出国项目申报即将开始。知识人网小编...
【C++】String模拟实现... 文章目录string的基本了解string类常用接口string类对象的常见构造string类对象的...
悉尼“原始”房产64年首次挂牌... 《悉尼晨锋报》5月31日报道,在周六的拍卖会上,一个来自悉尼内西区的家庭以 689万澳元的价格购入一...
瑞幸多款饮品降价3元 公司回应 瑞幸咖啡多款产品降价引起了消费者的关注。 据大象新闻报道,5月30日,有消费者下单时发现瑞幸咖啡迈入...
福田又多了一家上市公司! 近日 知名在线保险中介机构 手回集团 正式登陆港股市场 5月30日, 手回集团有限公司(简称“手回集...
雷军:小米汽车全国销售门店达2... 【CNMO科技消息】5月31日,小米公司主要创始人、董事长雷军宣布,小米汽车全国销售门店达298家。...
SpringCloud笔记(H... 配置中心:SpringCloud Config 应用服务除了实现系统功能,...