算法
msg1_
苟有恒,何必三更眠五更起,最无益,莫过一日曝十日寒
展开
-
sort 快排法
作用:给定N个整型范围内的整数,要求输出快速排序之后的结果。 输入数据第一行给出正整数N(N 输出降序排序后的结果,数字间以一个空格间隔 #include #include #include #include #include #include #define maxn 100 using namespace std; //const double原创 2017-11-08 23:43:32 · 517 阅读 · 0 评论 -
判断100以内的素数(高效算法)
1、首先定义大小为n+1的bool型数组prime[n+1] 2、将下标为奇数的赋值为true,偶数赋值为false 3、.然后: for( i=3; i { if(prime[i]) //将素数的所有倍数赋值为false for( j=i+i; j } 一个简单的筛素数的过程:n=30。 1原创 2017-10-26 14:17:43 · 2767 阅读 · 0 评论 -
二分查找法
二分查找法(折半查找): 二分查找法主要是解决在“一堆数中找出指定的数”这类问题 复杂度:O(logn) 使用二分查找法的条件: (1)、存储在数组中; (2)、有序排列(升序或降序都可以) 二分查找的效率: 1000个数据,约10次找出; 1e6(100万)个数据,约20次找出; 1e9个数据,约30次找出; 2^n个数据,约n次 * 给定一个已排序的整数数组原创 2017-11-14 13:34:28 · 347 阅读 · 0 评论 -
STL头文件中队列queue的使用
queue队列头文件#include 1、队列的定义 : queueq1; queueq2; 2、queue 的基本操作: 入队列,如例:q.push(x); 将x 接到队列的末端。 出队列,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。 访问队首元素,如例:q.front(),即最早被压入队列的元素。 访问队尾元素,如例:q.back(),即最后被原创 2017-11-14 19:47:22 · 1604 阅读 · 0 评论 -
快速幂
#include typedef long long LL; using namespace std; const LL Mod=1e9+7; LL x,n; int qwe(LL x,LL y) { LL t = 1; while(y){ if(y & 1) t = t * x % Mod; y /= 2; x = x * x % Mod; } return t; }原创 2017-11-21 17:01:45 · 122 阅读 · 0 评论 -
快速幂算法(qwe)
求a的b次方。(比如求 2^256 和2^16) 去求一些大数对于某个数的余数,为了得到更快、计算范围更大的算法,产生了快速幂取模算法。 普通算法: LL qwe1(LL x,LL y){ LL res = 1; for(LL i=1; i<=y; ++i) res *= x; return res; }复杂度: O(n) 求 2^256 会溢出, 求2^16要循环16次原创 2018-01-27 17:15:18 · 313 阅读 · 0 评论 -
1、字符串的旋转
题目描述: 给定长度为 n 的字符串,将字符串的前 m 个字符移动到字符串的尾部。例: n = 6,m = 3,s = "abcdef ",移动之后得到 s = "defabc".法一:暴力先实现移动一个字符,再进行 m 次循环void move_one(char* s,int n) { char t = s[0]; for(int i=1; i<n; ++i) s[i...原创 2018-05-10 16:32:49 · 120 阅读 · 0 评论