摘要: 堆排序是一种树形选择排序,是对直接选择排序的有效改进。 基本思想: 堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足 时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。 若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于( 阅读全文
posted @ 2016-09-20 22:25 泡面小王子 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。 简单选择排序的示例: 操作方法: 第一趟,从n 个记录中找出关键码最小的记 阅读全文
posted @ 2016-09-19 22:52 泡面小王子 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 希尔排序是1959 年由D.L.Shell 提出来的,相对直接排序有较大的改进。希尔排序又叫缩小增量排序 基本思想: 先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。 操作方法: 算法实现: 我们简单处理增量序列:增 阅读全文
posted @ 2016-09-18 18:26 泡面小王子 阅读(582) 评论(0) 推荐(0) 编辑
摘要: 基本思想: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 要点:设立哨兵,作为临时存储和判断数组边界之用。 如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等 阅读全文
posted @ 2016-09-17 21:22 泡面小王子 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 解决本题使用数学中的快速幂取余: 该方法总结挺好的:具体参考http://www.cnblogs.com/PegasusWang/archive/2013/03/13/2958150.html #include<iostream> #include<cmath> using namespace st 阅读全文
posted @ 2016-09-16 19:12 泡面小王子 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 基本思路:(参考大神和加自己的思考) 考虑到此题需要输入这么大的数a,并且还的求aa,求出来会更大,更多位。当时考虑用大数方法求(数组实现),结果实现不行。看网上大神采用对数法,巧妙避开处理这么大的数。 这就是数学的魅力!! 假如aa=b,两边同时取对数alog10a=log10b,从而有b=10a 阅读全文
posted @ 2016-09-14 19:42 泡面小王子 阅读(253) 评论(0) 推荐(0) 编辑
摘要: try-finally 语句 try-finally 语句无论是否发生异常都将执行最后的代码。 我们可以使用raise语句自己触发异常 raise语法格式如下: 当在try块中抛出一个异常,立即执行finally块代码。 finally块中的所有语句执行后,异常被再次触发,并执行except块代码。 阅读全文
posted @ 2016-09-13 21:38 泡面小王子 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 大菲波数 大菲波数 问题描述 : 问题描述 : Fibonacci数列,定义如下: f(1)=f(2)=1 f(n)=f(n-1)+f(n-2) n>=3。 计算第n项Fibonacci数值。 输入: 输入: 输入第一行为一个整数N,接下来N行为整数Pi(1<=Pi<=1000)。 输出: 输出: 阅读全文
posted @ 2016-09-13 10:34 泡面小王子 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 首先明白这是大数问题,大数问题大多采用数组来实现。如何进位、求余等。比如1047 (Integer Inquiry); 对于1042问题 计算10000以内数的阶乘,因为10000的阶乘达到35660位。所以普通的做法是无法实现的。所以我们只能定义一个40000个成员的数组就可以啦。 int a[4 阅读全文
posted @ 2016-09-12 20:03 泡面小王子 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 改版 为什么一直WA #include"stdio.h" #include"stdlib.h" #include"string.h" #define N 105 int a[N],b[N]; int main() { int i,j,n,n1,flag; char ch[N]; scanf("%d" 阅读全文
posted @ 2016-09-12 11:04 泡面小王子 阅读(199) 评论(0) 推荐(0) 编辑