算法
文章平均质量分 67
wretchedme
一步一步接受洗礼
展开
-
欧几里得的最大公约数!!!!(c/c++)
这种求最大公约数,是使用循环mod 的方法,最后的被除数就是最后的数字(最大的公约数)证明: a % k*b=c 设 a 和 b 的最大的公约数为 d. a = n * d; b = m * d; n 和 m 是互质的,(如果n 和 m 不是互质的就会产生d 不是最大的公约数). c = a % k*b = n*d - k原创 2014-08-21 17:08:49 · 1378 阅读 · 0 评论 -
希尔排序(shell)
希尔排序O(nlogn)希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。原创 2015-08-28 22:44:06 · 470 阅读 · 0 评论 -
冒泡排序的三种实现
关于冒泡排序和其他排序的动画加深理解冒泡排序:时间复杂度为O(n^2)1)普通的冒泡排序for (int i = 0;i < num;i++) { for (int j = 0;j < num-i-1;j++) { if (arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1原创 2015-08-28 19:51:40 · 477 阅读 · 0 评论 -
CCF模拟题4-有趣的数
问题描述我们把一个数称为有趣的,当且仅当:1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前。3. 最高位数字不为0。因此,符合我们定义的最小的有趣的数是2013。除此以外,4位的有趣的数还有两个:2031和2301。请计算恰好有n位的有趣的数的个数。由于答案可能非常大,只需要输出答案除以100000000原创 2015-08-28 18:33:08 · 1722 阅读 · 0 评论 -
选择排序的两种实现方法
选择排序时间复杂度为O(n^2)我个人感觉选择排序和插入排序非常的相似,选择排序是在有序队列后找到一个最大值放到有序队列后面,插入排序是在有序队列后随便一个数字,插入到有序队列中使之有序。int i, j;int index;int temp;for (i = 1;i <= num;i++) { temp = arr[i]; index = 0; for (j = i+原创 2015-08-31 23:49:58 · 663 阅读 · 0 评论 -
归并排序
我认为归并排序就是先把问题缩小化之后,分成多个集合,每一个集合进行排序,排成一个有序的序列,之后把集合合并一些,在进行排序,直到成为一个大集合为止。归并排序动画演示,请点void merge_sort (int *A, int x, int y, int *T) { if (y-x > 1) { int m = x + (y-x) /2; int p = x, q原创 2015-09-01 00:55:50 · 417 阅读 · 0 评论 -
快排
快速排序时间复杂度为O(nlogn)有关于快排的动画演示代码#include #include #include #include using namespace std;void qsort (int *arr, int left, int right) { if (left < right) { int key = arr[left]; int low = l原创 2015-09-02 20:12:33 · 485 阅读 · 0 评论 -
数组中只出现1次的两个数字(面试题)
这个题如果换成数组中只出现一次的一个数字,就非常好做了,大家都知道这个题目如何做,其实数组中出现一次的数字有两个也可以使用异或的方式来处理,不过不能直接进行判断,需要分成两组,每一组含有一个只出现一次的数字,现在问题来了?应该如何把这两数字进行分开,而且每一个数组都要含有除了只出现一次数字其他数必须都要偶数个。简单的说要使用那两个只出现一次的异或值,通过异或值我们能发现,在某一位上产生原创 2015-09-05 21:05:15 · 540 阅读 · 0 评论 -
归并排序之逆序对数
微软2010年笔试题在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序数对。一个排列中逆序的总数就称为这个排列的逆序数。如{2,4,3,1}中,2和1,4和3,4和1,3和1是逆序数对,因此整个数组的逆序数对个数为4,现在给定一数组,要求统计出该数组的逆序数对个数。这个题目是我在别人的csdn上看到的,没有想到微软也会出这样的题原创 2015-09-05 14:34:49 · 507 阅读 · 0 评论 -
选择排序总结
简单选择排序:#include #include #include #include using namespace std;int main (void) { int num; int arr[100]; while (scanf ("%d", &num) != EOF) { for (int i = 0;i < num;i++) { scanf ("%d", &a原创 2015-08-28 17:23:01 · 328 阅读 · 0 评论 -
直接插入排序
关于插入排序的小动画,请点击观看普通的插入排序,这个是我在高一凡写的数据结构上看到的,突然发现我原来不会写插入排序,哦哦哦哦哦哦,快疯了。for (i = 2;i <= num;i++) { if (arr[i] < arr[i-1]){ arr[0] = arr[i]; for (j = i-1;arr[j] > arr[0];j--) { arr[j+1] = arr[原创 2015-08-28 21:10:48 · 391 阅读 · 0 评论 -
插入排序总结
简单插入排序:#include #include #include #include using namespace std;int main (void) { int i, j; int arr[100]; int num; while (scanf ("%d", &num) != EOF) { for (i = 1;i <= num;i++) { scanf (原创 2015-08-25 17:59:03 · 314 阅读 · 0 评论 -
memset函数
memset 函数头文件: string.h函数sheng ming原创 2014-08-25 06:27:22 · 762 阅读 · 0 评论 -
筛法求素数!!!
一般的筛法求素数减少运行时间,提高效率的筛法求素数原创 2014-08-25 22:16:47 · 735 阅读 · 0 评论 -
又见皇后!!!
这道题算是原创 2014-10-31 16:07:44 · 914 阅读 · 0 评论 -
ACM题目和培养训练!!!
ACM大量习题题库 ACM大量习题题库 现在网上有许多题库,大多是可以在线评测,所以叫做Online Judge。除了USACO是为IOI准备外,其余几乎全部是大学的ACM竞赛题库。USACOhttp://ace.delos.com/usacogate美国著名在线题库,专门为信息学竞赛选手准备TJUhttp://acm.tongji.edu.cn/同济大学在线题转载 2014-11-03 23:22:03 · 2505 阅读 · 0 评论 -
poj1002
题目原创 2014-11-03 22:44:18 · 474 阅读 · 0 评论 -
计算集合 常用算法模版!!!
转载 2014-10-31 16:34:34 · 535 阅读 · 0 评论 -
最小生成树!!!
好久没有总结题目了,大概有好长时间了,怎么颓废了呢,一定是看片看多了,以后还是要洁身自好一点。。。。。。(无耻的笑)最小生成树!!!求1我i起点的最小生成树3 3 1 2 12 3 21 3 4结果:3由于这半年来我开了数据结构这门课程,虽然老师有点坑,但是我还是真正的学习了,(不学能行么!!!)这是图的问题,在老严的原创 2014-12-07 10:40:05 · 572 阅读 · 0 评论 -
hdoj - 1425!!!
说实话我很懒的,我实在是不想写这个题目了,就直接截图了。这是我好久之前做的一个题目了,都有一点忘了,原创 2014-12-07 15:01:27 · 557 阅读 · 0 评论 -
找到一个重复元素 - 面试题
对于n个元素,每一个数据的范围[0,n-1],找到一个重复元素,空间O(1),时间O(n)解法一:#include #include #include #include using namespace std;int radix_sort (int *arr, int num) { int temp; for (int i = 0;i < num;i++) { while原创 2015-09-05 19:46:17 · 388 阅读 · 0 评论