【算法拾忆】教程文章相关的互联网学习教程文章

经典算法集锦

计数排序KMP算法Astar算法正在整理中......原文:http://blog.csdn.net/starcuan/article/details/18960881

算法-创建链表【代码】【图】

掌握数据结构和算法,尤其是链表,面试编程题经常考下面是用尾插法创建链表#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<malloc.h> #include <string.h>typedef struct node {int data;struct node *next; }Node;Node *LinkListCreat(int n)//链表创建函数{Node *p;Node *head,*rear;int i = 0; Node *Tal;head = (Node *)malloc(sizeof(Node));rear = head;rear->next = NULL;for (i = 0; i < n; i++){p = (Nod...

【排序算法】快速排序【代码】【图】

什么是快速排序?摘自漫画算法:同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是,冒泡排序在每一轮中只把1个元素冒泡到数列的一端,而快速排序则在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列的一端,比它小的元素移动到数列的另一端,从而把数列拆解成两个部分。这种思路就叫做分治法。每次把数列分成两部分,究竟有什么好处呢?假如给出一个8个元素的数列,一般...

TCP 组包和拆包算法【代码】

/************************************* 文件名: server.c TCP 组包和拆包实现算法作者: 马中海 QQ: 284358503 Email: zhonghaima001@163.com */ #include <stdlib.h> #include <sys/types.h> #include <stdio.h> #include <sys/socket.h> #include <linux/in.h> #include <string.h>#include <stdio.h> #include <stdlib.h> #include <string.h>#define BUF_SIZE 1024*5//#define TCP_PACK_DEBUG 1int main() {int nBufus...

C++ 算法 排序 从中间向左右两边依次递减排序【代码】

问题:现有一整型数组int input[]={...};如果数组元素个数是奇数,则以中间一个为最大,左边第一个次之,右边第一个再次之。。。如此排序后,最左边第二小,最右边最小如果数组元素个数是偶数,则以中间两个的右边那个为最大,左边第一个次之,右边第一个再次之。。。如此排序后,最右边第二小,最左边最小举例:奇数个如:input[]={3,4,8,1,9};排序后:input[]={3,8,9,4,1};偶数个如:input[]={3,4,8,1,9,6};排序后:input[]={1,4...

第二节、算法中的公平——队列【代码】【图】

1、栗子 学校食堂打饭、火车站买火车票、公交站等车,都要排队,先来的先上车,车满了,其余只能等下一班了。这对大多数人而言,都是相对公平的方式。在算法中,也有类似的公平——队列(queue)。队列遵循先进先出(First In First Out,简写FIFO)的规则,同栈的实现一样,队列的实现也有数组实现和链表实现两种方式。数组实现和链表实现没有绝对的优劣,平时接触数据比较多,所有首选数组实现啦。2、准备工作队列主要在结构上包...

算法笔记_160:算法提高 约数个数(Java)【代码】【图】

目录1 问题描述2 解决方案 1 问题描述 输入一个正整数N (1样例输入12样例输出6样例说明  12的约数包括:1,2,3,4,6,12。共6个 2 解决方案 具体代码如下:import java.util.Scanner;publicclass Main {publicstaticvoid main(String[] args) {int count = 0;Scanner in = new Scanner(System.in);int n = in.nextInt();for(int i = 1;i <= n;i++) {if(n % i == 0)count++;}System.out.println(count);} } 原文:http://www.cnblo...

MD5消息摘要算法【代码】【图】

既然准备从事信息安全行业,那么就先一步步打牢基础吧。 MD5特点: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。2、容易计算:从原数据计算出MD5值很容易。3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 MD5原理:对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且...

算法-二叉树前序遍历的思考【代码】【图】

有两种通用的遍历树的策略: 深度优先搜索(DFS) 在这个策略中,我们采用深度作为优先级,以便从跟开始一直到达某个确定的叶子,然后再返回根到达另一个分支。 深度优先搜索策略又可以根据根节点、左孩子和右孩子的相对顺序被细分为前序遍历,中序遍历和后序遍历。 宽度优先搜索(BFS) 我们按照高度顺序一层一层的访问整棵树,高层次的节点将会比低层次的节点先被访问到。作者:LeetCode链接:https://leetcode-c...

【算法】【动态规划】背包问题【代码】【图】

0-1背包题目链接:https://www.acwing.com/problem/content/2/思路实现#include <iostream>using namespace std;const int N = 1010; int dp[N][N]; int V[N]; int W[N];int main() {int n, v;cin >> n >> v;for(int i = 1; i <= n; i++){cin >> V[i] >> W[i];}for(int i = 1 ; i <= n; i++){for(int j = 1; j <= v; j++){dp[i][j] = dp[i - 1][j];if(j - V[i] >= 0) dp[i][j] = max(dp[i][j], dp[i - 1][j - V[i]] + W[i]);}}cout...

matlab下二重积分的蒙特卡洛算法

%%monte_carlo_ff.m%被积函数(二重)function ff=monte_carlo_ff(x,y)ff=x*y^2;%函数定义处end%%monte_carlo.m%蒙特卡洛计算二重积分function result=monte_carlo(a,b,c,d,n,m)%先y后x积分,a是x积分下限,b是x积分上限,c是y积分下限,d是y积分上限,n,m是蒙特卡洛参数 sumxff=0; for i=1:n sumyff=0; xff=a+(b-a)*rand(); for j=1:m yff=c+(d-c)*rand(); sumyff=sumyff+mont...

LRU算法简介【代码】

LRU是什么?按照英文的直接原义就是Least Recently Used,最近最久未使用法,它是按照一个非常注明的计算机操作系统基础理论得来的:最近使用的页面数据会在未来一段时期内仍然被使用,已经很久没有使用的页面很有可能在未来较长的一段时间内仍然不会被使用。基于这个思想,会存在一种缓存淘汰机制,每次从内存中找到最久未使用的数据然后置换出来,从而存入新的数据!它的主要衡量指标是使用的时间,附加指标是使用的次数。在计算机中...

算法分析设计--递归算法【代码】【图】

What‘s the 递归算法定义: 程序直接或间接调用自身的编程技巧称为递归算法(Recursion)。 一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量特点: 任何一个可以用计算机求解的问题所需的计算时间都与其规模n有关。问题的规模越小,越容易...

C++算法之——常用算法总结

http://blog.sina.com.cn/s/blog_61bebe480100v7c7.html 基本的C++算法分为三类:排序算法、树算法、图算法算法思想有三种:递推、分治、动态规划 以及 贪心算法。本文将简要介绍上面三类算法,介绍时穿插介绍算法思想。 一、排序算法 1、基本O(n^2)排序算法: (对基本排序算法的时间复杂度分析主要考虑 比较次数、数据交换次数)冒泡排序:针对数组、本地排序、需要交换数据。O(1)额外空间选择排序:一般针对数组、本地排序、需...

数组与队列算法【代码】

二者均是抽象数据类型( Abstract Data Type, ADT ) 堆栈在 Python 中包含两种方式,分别是数组结构(以List仿真数组结构)和链表结构用数组实现堆栈 设计算法简单。但是,如果堆栈本身大小是可以变动的,而数组大小只能事先规划和声明好,那么数组规划大了会浪费空间,小了不够用。 判断是否为空堆栈 def is_empty():global topif top == -1: # 顶端return Trueelse:return False入栈 def push(data):global topglobal MAXSTACK ...