- 博客(12)
- 收藏
- 关注
原创 1 排序概要
由于待排序的记录数量不同,使排序过程中所涉及的存储器不同,因此可以分为两种排序:内部排序、外部排序。内部排序:指待排的记录存储在计算机的内存中(随机存储器);外部排序:指待排序的记录数量很大,以至于内存不能一次全部容纳,因此在排序的过程中需要访问外存。我们一般说的排序,指的是内部排序。常见的内部排序有八种,见下图: 1.什么是排序?排序就是将一组混乱的记录,按照其中的某个或者某些关键字来排成有序序
2018-04-23 13:07:58
287
原创 1.3 选择排序(简单排序、堆排序)
选择排序:基本思想是每一趟选择n-i+1(i=,2,3…n-1)个记录中选取关键字最小的记录作为有序序列中的第i个元素。(每一次从剩余需要排序的数中,选择一个最小的,放在已经排好蓄序列的后面)简单选择排序一、定义实现第一趟:从n个元素中根据关键字选取最小的记录,然后与第一个元素交换;(第一个元素的角标是0) 第二趟:从剩余的n-1个元素中根据关键字选择最小的记录,然后与第二个素交换位置; …
2017-11-24 17:12:08
685
原创 筛选素数
一般筛选素数是判断这个数是否存在除了1和本身外的其他约数,但是对于大数的时候就不适合使用了。筛选素数的过程:质数的倍数的都需要被除去const int V=10000;int a[V],prime[V],j=0;// j记录的是素数的个数void get_prime(){ //a[i]为0则i为素数 memset(a,0,sizeof(a)); for(in
2016-07-12 20:14:09
501
原创 最大公约数和最小公约数
1.求两个数的最大公约数int gcd(int a,int b){ // 约数和倍数不包含0,则遇到0情况则直接排除 if(0==a||0==b) return 0; int t=a%b; while(t) { a=b; b=t; t=a%b; } return b;}求多个数(
2016-07-12 19:43:06
811
原创 神奇的快速幂
快速幂:快速的求某个数的幂次,一般是针对大数比如:一般情况:311 是11个3连续相乘快速幂:311 = 3(8+2+1)=3(23+21+20)=323*321*320 那么如何来求每一项(323 、321、320 )呢?Temp *= temp; // 1011每一位的对应的都是上一位的翻倍的幂次,所以相乘则幂次相加代码如下:#include
2016-07-12 08:13:52
384
原创 编译原理--词法分析
词法分析实验目的:设计、编制并调试一个词法分析程序, 加深对词法分析原理的理解。实验环境: Codeblocks 12.11实验内容:1.待分析的简单词法:(1)关键字:if else break int float,包括C语言的32个关键字,并且全部是小写;(2)运算符:算术、关系、逻辑、赋值、界符;(3)标识符(ID)定义:
2016-05-27 14:49:33
1315
原创 1~N中随机选三个数,求其最大的 最小公倍数。
N的范围是1~10E6自己的想法是:N 的范围比较大,自己可以选出范围内最大的那个质数Z,然后再乘以范围最大的连个不同的数,就可以得出最大的 最小公倍数。错误第一个,这样的三个数直接相乘得到其最小公倍数,要求是这三个数必须两两互质,但是自己求出的三个数可能只满足 质数Z和其他两个数互质,但是其他的两个数不一定互质,所以求出的这个数不一定是 三个数的 最小公倍数。在把1~10E6范围内的质数打表
2015-11-09 22:01:46
1467
翻译 整数划分
题目:点击打开链接(一)递归法 根据n和m的关系,考虑以下几种情况: (1)当 n = 1 时,不论m的值为多少(m > 0 ),只有一种划分即 { 1 }; (2) 当 m = 1 时,不论n的值为多少,只有一种划分即 n 个 1,{ 1, 1, 1, ..., 1 }; (3) 当 n = m
2014-12-09 15:12:14
414
原创 某点最大覆盖次数
题目链接 :点击打开链接官方题解:我们可以将一条线段[xi,yi]分为两个端点xi和(yi)+1,在xi时该点会新加入一条线段,同样的,在(yi)+1时该点会减少一条线段,因此对于2n个端点进行排序,令xi为价值1,yi为价值-1,问题转化成了最大区间和,因为1一定在-1之前,因此问题变成最大前缀和,我们寻找最大值就是答案,另外的,这题可以用离散化后线段树来做。复杂度为排序的复杂度
2014-12-08 21:47:02
1122
原创 皇后问题
皇后问题 (问题简述)在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。总体的思路:一行一行的放置皇后,这样就不用考虑两个黄后在同一行,只需考虑皇后是否在同一列和对角线的位置#include #include #inclu
2014-12-06 11:13:39
720
原创 一元三次方程求解(注意范围)
题目链接:点击打开链接代码:#include #include double a,b,c,d;double f(double x){ return a*x*x*x+b*x*x+c*x+d;}int main(){ double i; int k; while(~scanf("%lf%lf%lf%lf",&a,&
2014-11-23 10:08:26
800
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人