排序查找
排序和查找模板
YAOSHIAO
这个作者很懒,什么都没留下…
展开
-
AcWing 788. 逆序对的数量(C++算法)
AcWing 788. 逆序对的数量1、题目(来源于AcWing):给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数n,表示数列的长度。第二行包含 n 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤100000输入样例:62 3 4 5 6 1输出样例:52、基本思想:原创 2020-07-08 11:31:47 · 347 阅读 · 0 评论 -
AcWing 790. 数的三次方根(C++算法)
AcWing 790. 数的三次方根1、题目(来源于AcWing):给定一个浮点数n,求它的三次方根。输入格式共一行,包含一个浮点数n。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留6位小数。数据范围−10000≤n≤10000输入样例:1000.00输出样例:10.0000002、基本思想:运用浮点数二分的思想。3、步骤:①取中间值mid=(左边界+右边界)/ 2②若mid<n则在mid右边取,反之在mid左边取③循环缩小范围4、C++代码如下(原创 2020-07-07 21:00:31 · 1855 阅读 · 0 评论 -
AcWing 786. 第k个数(C++算法)
AcWing 786. 第k个数1、题目(来源于AcWing):给定一个长度为n的整数数列,以及一个整数k,请用快速选择算法求出数列的第k小的数是多少。输入格式第一行包含两个整数 n 和 k。第二行包含 n 个整数(所有整数均在1~109范围内),表示整数数列。输出格式输出一个整数,表示数列的第k小数。数据范围1≤n≤100000,1≤k≤n输入样例:5 32 4 1 5 3输出样例:32、基本思想:用快速选择算法。当分界点x左边(有sl个数)全比它小右边(有sr个数)全比原创 2020-07-07 21:47:22 · 379 阅读 · 0 评论 -
浮点数二分(以求平方根为例)
浮点数二分(以求平方根为例)1、基本思想:与整数二分类似,浮点数二分与整数二分相比无需考虑边界问题,只需查找一次。2、步骤:①取中间值(l + r)/ 2②比较 mid 的平方与 x 的大小来缩小二分区间3、C++代码如下(来源于AcWing网站)#include <iostream>using namespace std;int main(){ double x; cin >> x;//输出x double l = 0, r = x; while原创 2020-07-07 09:26:55 · 1623 阅读 · 0 评论 -
AcWing 789. 数的范围(C++算法)
AcWing 789. 数的范围1、题目(来源于AcWing):给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该元素,则返回“-1 -1”。输入格式第一行包含整数n和q,表示数组长度和询问个数。第二行包含n个整数(均在1~10000范围内),表示完整数组。接下来q行,每行包含一个整数k,表示一个询问元素。输出格式共q行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在原创 2020-07-07 08:52:32 · 265 阅读 · 0 评论 -
AcWing 787.归并排序(C++算法)
AcWing 787.归并排序1、题目:给定你一个长度为n的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 52、基本思想:用分治的思想。将一组数据从中间平分为两组,用递归将左右两组数据分原创 2020-07-06 11:08:23 · 139 阅读 · 0 评论 -
AcWing 785. 快速排序(C++算法)
AcWing 785. 快速排序1、题目:给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 52、基本思想:用分治的思想。选定一个标杆数x,将小于x的数放在x左侧,将大于转载 2020-07-05 22:26:46 · 374 阅读 · 0 评论