【2019 GDUT Winter Training V ( 算法优化)】教程文章相关的互联网学习教程文章

经典算法:基数排序的小例子

1.概述基数排序(Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序的发明可以追溯到1887年赫尔曼·何乐礼在打孔卡片制表机(Tabulation Machine)上的贡献。原理:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次...

SHA1算法原理

一.SHA1与MD5差异SHA1对任意长度明文的预处理和MD5的过程是一样的,即预处理完后的明文长度是512位的整数倍,但是有一点不同,那就是SHA1的原始报文长度不能超过2的64次方,然后SHA1生成160位的报文摘要。SHA1算法简单而且紧凑,容易在计算机上实现。表8-2-1列出了对MD5及SHA1的比较差异之处。让我们根据各项特性,简要说明其间的不同。表8-2-1 MD5与SHA1的比较差异处MD5SHA1摘要长度128位160位运算步骤数6480基本逻辑函数数目44...

《机器学习实战》学习笔记第十二章 —— FP-growth算法【代码】

# coding:utf-8class treeNode: #树结点def__init__(self, nameValue, numOccur, parentNode):self.name = nameValue #这个结点所存的字母self.count = numOccur #结点计数器self.nodeLink = None #指向下一个同字母的结点的指针self.parent = parentNode # 指向父节点的指针,用于上溯self.children = {} #儿子结点的指针集def inc(self, numOccur): #更新结点计数器self.count += numOccurdef creat...

Linux多线程,生产者消费者算法和条件变量的使用【代码】

接着上一篇博文,原来双线程,现在为了实现 暂停/继续 功能,又加了一个线程。第三线程使用条件信号量,当用户按下S键,第三线程将检测到,并且将ifpause置为1,然后输出线程将在if语句成立后被条件信号量cond阻塞。此时第三线程依然运行。当检测到按下R后,ifpause置为0,并且使用条件信号量唤醒输出线程。全局采用生产者/消费者算法。保证输出线程和从文件读数字的线程相互合作正确。第三线程调用的函数kbhit(),前面一堆语句是为...

POJ 1470 Closest Common Ancestors (最近公共祖先LCA 的离线算法Tarjan)【代码】【图】

Tarjan算法的详细介绍,请戳:http://www.cnblogs.com/chenxiwenruo/p/3529533.html #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <string> #include <vector> /* AC 一开始读取数据的方式并不好,运行900多ms。 后来参照了别人的读取方式,600+ms。 */usingnamespace std; constint maxn=905; int n,m; int anc[maxn]; //记录以i为公共祖先的个数对int indegree[maxn]; //记录入度...

各种排序算法原理图【图】

Insertion:插入排序,每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 详细介绍见:http://www.cnblogs.com/kkun/archive/2011/11/23/2260265.htmlSelection:选择排序,直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小(或最大)数字出来,顺序放入新数组,直到全部拿完。详细介绍见:http://www.cnblogs.com/kkun/archive/2011/11/23/2260281.htmlBubble:泡排序,是一个两层...

Prim算法模板【代码】

1 #include <stdio.h>2 #include <string.h>3 #include <algorithm>4usingnamespace std;5constint N=1001;6constint inf=1<<29;7int w[N][N];8int dis[N],flag[N];9int n,m,u,v,c; 10int prim() 11{ 12int sum=0;//计算最小距离13 memset(flag,0,sizeof(flag)); 14for(int i=1; i<=n; i++) 15 { 16 dis[i]=w[1][i];//把起点到每个点的距离付给dis17 } 18 flag[1]=1; 19for(int i=1; i<n; i++)//会更新n-1次...

缓存淘汰算法之LRU

1. LRU1.1. 原理LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。1.2. 实现最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:1. 新数据插入到链表头部;2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;3. 当链表满的时候,将链表尾部的数据丢弃。1.3. 分析【命中率】 当存在热点数据时,L...

c-大量经典的c算法---ShinePans

经典的100个c算法 算法 题目:古典问题:有一对兔子。从出生后第3个月起每一个月都生一对兔子。小兔 子长到第三个月后每一个月又生一对兔子,假如兔子都不死,问每一个月的兔子总数 为多少? __________________________________________________________________ 程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... ___________________________________________________________________ 程序源码: main() { long f1,f2; int i;...

mysql --Bitmaps算法分析

在mysql数据库中,对于字段性别等特殊字段,可能需要八个变量存储,就算你用tinyint(1),也是不划算的。对于这八个变量至少占用8个字节。但是采用位图,一个字节足矣。我们用一个比特位代表true和false值,而8个变量可缩写成01000010,表示该男性处于未婚状态,户口所在地北京,无研究生学历,共占用一个字节。这样可以节省空间,也提高了处理速度,其实用位图可以理解为位映射。 在mysys/目录下的my_bitmap.c文件包含各种操作...

算法录 之 二分和三分【代码】【图】

虽然你十分聪明伶俐,但是还是要说一下 二分 和 三分。  二分:    首先说一下二分不是二分,是二分。就是一分为二的二分。    先来一个例子:    现在有一个递增的序列 a(1), a(2)...a(n),然后让你查找 x 在不在这个序列里面?    显然最简单的做法就是一个for循环,从1到n,看看有没和x相等的。。。    这样确实不错,但是太慢了。。。需要n次才能找到。有没更好的做法呢?    有(要是没有的话我说这...

Paxos算法

Paxos算法是莱斯利·兰伯特(Leslie Lamport, 就是 LaTeX 中的"La")于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法.Paxos算法作为分布式系统的基石, 一直都是CS领域的热门话题, 这次我们来了解一下Paxos算法.Paxos算法初步一. Paxos算法的理论基础在讲述Paxos算法之前, 我们必须要了解一个前置知识.CAP定理CAP定理是分布式系统, 特别是分布式存储领域中被讨论最多的理论, CAP定理(Consistency, Availability and Par...

牛逼加密解密算法

加密结果每次都是动态改变的,但是还能解密出来,太他妈牛叉了 <?php/** * $string 明文或密文 * $operation 加密ENCODE或解密DECODE * $key 密钥 * $expiry 密钥有效期 */ function authcode($string, $operation = ‘DECODE‘, $key = ‘‘, $expiry = 0) { // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解...

简单算法【代码】

示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6输出:[1,2]示例 3:输入:nums = [3,3], target = 6输出:[0,1]publicint[] twoSum(int[] nums, int target) {for (int i = 0; i < nums.length; i++) {for (int j = i + 1; j < nums.length; j++) {if (nums[j] == target - nums[i]) {returnnewint[] { i, j };}}}thrownew...

算法训练——暗恋【代码】

//算法训练——暗恋 //思路:枚举 #include<stdio.h> #define MAX 200 int map[MAX][MAX]; int judge(int x,int y,int cur){ //判断以(x,y)为左上角、长度为cur,能否构成一个纯色的正方形 int color;color = map[x][y]; for(int i=x;i<x+cur;i++){for(int j=y;j<y+cur;j++){if(color != map[i][j])return 0;}}return 1; } int main(){int i,j,curMax,maxWidth,row,col;scanf("%d%d",&row,&col);for(i=0;i<row;i++)for(j=0;j<col...