算法
文章平均质量分 70
Aguangg_6655_la
充电。。。
展开
-
模2运算的原理
模2运算是一种二进制算法,CRC校验技术中的核心部分,因此,我们在分析CRC算法之前,必须掌握模2运算的规则。与四则运算相同,模2运算也包括模2加、模2减、模2乘、模2除四种二进制运算。而且,模2运算也使用与四则运算相同的运算符,即“+”表示模2加,“-”表示模2减,“×”或“·”表示模2乘,“÷”或“/”表示模2除。与四则运算不同的是模2运算不考虑进位和借位,即模2加法是不带进位的二进制加法运算转载 2016-12-05 16:01:37 · 1084 阅读 · 0 评论 -
最大流问题:增广路径算法的比较
最大流问题:增广路径算法的比较 这篇文章我们将重温最大流问题,实现一些最有名的增广路径算法的实际分析的目标。我们将讨论的这几种算法的复杂度在O(n*m*m)到O(n*mlogU)之间,并且从讨论的结果中得到在实践中最有效的一种。正如我们所想的,理论上的复杂度并不能揭示该算法在实际中的价值。 这篇文章所针对的是熟悉网络流理论的基本知识的读者。如果你对网络流理论转载 2017-03-26 20:34:13 · 4977 阅读 · 0 评论 -
Add Two Numbers --leetcode
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return i原创 2017-03-16 22:05:42 · 366 阅读 · 0 评论 -
Two Sum --leetcode
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the sam原创 2017-03-15 22:13:13 · 456 阅读 · 0 评论 -
排序算法--快速排序(分治法)
思想快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整原创 2017-03-15 20:17:42 · 3098 阅读 · 0 评论 -
排序算法--冒泡排序
冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。题目:任意输入10个整型数字,按从小到大的顺序排列。程序见下:原创 2017-03-15 17:08:19 · 481 阅读 · 0 评论 -
排序算法--选择排序法
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。例题:任意输入10个数字,选择排序后输出。见代码:#include#de原创 2017-03-15 16:19:34 · 437 阅读 · 0 评论 -
八皇后与回溯法
题目原文:Write an algorithm to print all ways of arranging eight queens on a chess board so that none of them share the same row, column or diagonal.译文:经典的八皇后问题,即在一个8*8的棋盘上放8个皇后,使得这8个皇后无法互转载 2017-03-14 20:53:56 · 591 阅读 · 0 评论 -
回溯法在排列组合问题中的应用
回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术称为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 例题:排列组合问题,找出n个自然数(1,2,3,4,。。。n)中取r个数的组合。分析:当n=5,r=3,所有组合为:5 435 425 415 3原创 2017-03-14 20:15:43 · 1163 阅读 · 0 评论 -
简单迭代法求解方程举例
迭代法是方程及方程组求解的重要方法。关于其原理可另行查询。这里附上一篇简单的迭代法小程序。用于解方程:x+e^x=0#include#include#define fnx(x) -exp(x)void main(){ float x0,x1; x0=0; x1=fnx(x0); while(fabs(x1-x0)>0.00001) { x0=x1; x1=fnx(原创 2017-03-14 16:05:21 · 21399 阅读 · 0 评论 -
递归和迭代
递归和迭代都是循环中的一种。简单地说,递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。递归循环中,遇到满足终止条件的情况时逐层返回来结束。迭代则使用计数器结束循环。当然很多情况都是多种循环混合采用,这要根据具体需求。使用递归要注意的转载 2017-04-08 21:21:52 · 489 阅读 · 0 评论 -
Longest Substring Without Repeating Characters --leetcode
Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the answer is "原创 2017-03-17 14:56:46 · 438 阅读 · 0 评论 -
extern “C”的用法
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。 这个功能十分有转载 2017-02-23 17:08:54 · 386 阅读 · 0 评论 -
环形缓冲区
圆形缓冲区(circular buffer),也称作圆形队列(circular queue),循环缓冲区(cyclic buffer),环形缓冲区(ring buffer),是一种数据结构用于表示一个固定尺寸、头尾相连的缓冲区,适合缓存数据流。目录1 用法2 工作过程3 圆形缓冲区工作机制3.1 读指针与写指针3.2 区分缓冲转载 2017-02-19 18:33:54 · 6256 阅读 · 0 评论 -
十个基础实用算法及其简介
1快速排序算法快速排序是由东尼•霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divideandconquer)策略来把一个串行(l转载 2016-12-21 16:29:08 · 541 阅读 · 0 评论 -
深度优先搜索和广度优先搜索
(DFS)深度优先搜索,伪代码如下:void DFS_search(Node root){ if(root==null) return; visit(root);//例如打印该结点。 root.visited=true;//visited 布尔类型变量,用于标识该结点是否被访问过。 foreach(Node n in root.adjacent){//遍历该结点的所有邻接结点。 i原创 2017-04-20 14:06:52 · 520 阅读 · 0 评论