
算法
wp猿
这个作者很懒,什么都没留下…
展开
-
求逆序对的数量--归并排序
给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数 n,表示数列的长度。第二行包含 n 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤100000,数列中的元素的取值范围 [1,109]。输入样例:62 3 4 5 6 1输出样例:5#include<iostream&g原创 2021-10-11 00:03:11 · 128 阅读 · 0 评论 -
浮点数开平方--使用浮点数二分
#include<iostream>using namespace std;int main(){ double x; cin>>x; double l=0,r=x; while(r-l>1e-8) { double mid=(l+r)/2; if (mid*mid>=x) r=mid; else l=mid; } printf("%1f\n",l); return 0; }原创 2021-10-10 22:17:33 · 429 阅读 · 1 评论 -
整数二分模板
//整数二分 //区间[l,r]被划分成[l,mid]和[mid+1,r]时使用; int bsearch_1(int l,int r){ while(l<r) { int mid=l+r>>1; if (check(mid)) r=mid; else l=mid+1; } return l; } //区间[l,r]被划分成[l,mid-1]和[mid,r]时使用 ; int bsearch_2(int l,int r) { while(l<原创 2021-10-10 22:06:55 · 81 阅读 · 0 评论 -
c++实现归并排序
算法二:归并排序–分治//1.确定分界点 – 下标的中间值mid//2.递归排序左右 log(n)//3.归并–合二为一 O(n)#include<iostream>using namespace std;const int N=1e6+10;int q[N],tmp[N];void merge_sort(int q[],int l,int r){ if (l>=r)return;//判断数组长度如果小与等于1,则返回。 int mid=l+r>>原创 2021-10-09 20:56:09 · 173 阅读 · 0 评论 -
c++实现快速排序
快速排序#include<iostream>using 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+r>>1], i = l - 1, j = r + 1; //取x,先执行do语句,所以i,j这样处理 while (i原创 2021-10-06 21:24:48 · 232 阅读 · 0 评论