上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 24 下一页

2018年2月24日

一道C语言安全编码题目

摘要: 1、前言 最近在网上看到一道C语言题目,用C语言实现一个函数,给定一个int类型的整数,函数输出逆序的整数,例如输入123,则输出字符串"321",,输入-123,则输出字符串"-321"。题目要求,不使用标准库,不得分配内存。当时觉得蛮简单的,这不就是类似字符串逆转嘛,自己尝试做了一下,测试发现, 阅读全文

posted @ 2018-02-24 15:01 AlanTu 阅读(432) 评论(0) 推荐(0) 编辑

深度解析(一六)Floyd算法

摘要: Floyd算法(一)之 C语言详解 本章介绍弗洛伊德算法。和以往一样,本文会先对弗洛伊德算法的理论论知识进行介绍,然后给出C语言的实现。后续再分别给出C++和Java版本的实现。 目录 1. 弗洛伊德算法介绍 2. 弗洛伊德算法图解 3. 弗洛伊德算法的代码说明 4. 弗洛伊德算法的源码 转载请注明 阅读全文

posted @ 2018-02-24 14:37 AlanTu 阅读(537) 评论(0) 推荐(0) 编辑

深度解析(十五)哈夫曼树

摘要: 哈夫曼树(一)之 C语言详解 本章介绍哈夫曼树。和以往一样,本文会先对哈夫曼树的理论知识进行简单介绍,然后给出C语言的实现。后续再分别给出C++和Java版本的实现;实现的语言虽不同,但是原理如出一辙,选择其中之一进行了解即可。若文章有错误或不足的地方,请帮忙指出! 目录 1. 哈夫曼树的介绍 2. 阅读全文

posted @ 2018-02-24 14:18 AlanTu 阅读(1860) 评论(0) 推荐(0) 编辑

常用排序算法(九)基数排序

摘要: 基数排序 概要 本章介绍排序算法中的基数排序。内容包括:1. 基数排序介绍2. 基数排序图文说明3. 基数排序实现3.1 基数排序C实现3.2 基数排序C++实现3.3 基数排序Java实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3603669. 阅读全文

posted @ 2018-02-24 14:07 AlanTu 阅读(320) 评论(0) 推荐(0) 编辑

常用排序算法(八)桶排序

摘要: 桶排序 概要 本章介绍排序算法中的桶排序。内容包括:1. 桶排序介绍2. 桶排序图文说明3. 桶排序实现3.1 桶排序C实现3.2 桶排序C++实现3.3 桶排序Java实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3602737.html 更多排 阅读全文

posted @ 2018-02-24 14:05 AlanTu 阅读(285) 评论(0) 推荐(0) 编辑

常用排序算法(七)归并排序

摘要: 归并排序 概要 本章介绍排序算法中的归并排序。内容包括:1. 归并排序介绍2. 归并排序图文说明3. 归并排序的时间复杂度和稳定性4. 归并排序实现4.1 归并排序C实现4.2 归并排序C++实现4.3 归并排序Java实现 转载请注明出处:http://www.cnblogs.com/skywan 阅读全文

posted @ 2018-02-24 14:03 AlanTu 阅读(351) 评论(0) 推荐(0) 编辑

常用排序算法(六)堆排序

摘要: 堆排序 概要 本章介绍排序算法中的堆排序。 目录1. 堆排序介绍2. 堆排序图文说明3. 堆排序的时间复杂度和稳定性4. 堆排序实现4.1 堆排序C实现4.2 堆排序C++实现4.3 堆排序Java实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p/36 阅读全文

posted @ 2018-02-24 14:01 AlanTu 阅读(532) 评论(0) 推荐(0) 编辑

常用排序算法(五)选择排序

摘要: 选择排序 概要 本章介绍排序算法中的选择排序。 目录1. 选择排序介绍2. 选择排序图文说明3. 选择排序的时间复杂度和稳定性4. 选择排序实现4.1 选择排序C实现4.2 选择排序C++实现4.3 选择排序Java实现 转载请注明出处:http://www.cnblogs.com/skywang1 阅读全文

posted @ 2018-02-24 13:58 AlanTu 阅读(137) 评论(0) 推荐(0) 编辑

常用排序算法(四)希尔排序

摘要: 希尔排序 概要 本章介绍排序算法中的希尔排序。内容包括:1. 希尔排序介绍2. 希尔排序图文说明3. 希尔排序的时间复杂度和稳定性4. 希尔排序实现4.1 希尔排序C实现4.2 希尔排序C++实现4.3 希尔排序Java实现 转载请注明出处:http://www.cnblogs.com/skywan 阅读全文

posted @ 2018-02-24 13:48 AlanTu 阅读(268) 评论(0) 推荐(0) 编辑

常用排序算法(三)直接插入排序

摘要: 直接插入排序 概要 本章介绍排序算法中的直接插入排序。内容包括:1. 直接插入排序介绍2. 直接插入排序图文说明3. 直接插入排序的时间复杂度和稳定性4. 直接插入排序实现4.1 直接插入排序C实现4.2 直接插入排序C++实现4.3 直接插入排序Java实现 转载请注明出处:http://www. 阅读全文

posted @ 2018-02-24 13:40 AlanTu 阅读(426) 评论(0) 推荐(0) 编辑

常用排序算法(二)快速排序

摘要: 快速排序 概要 本章介绍排序算法中的快速排序。 目录1. 快速排序介绍2. 快速排序图文说明3. 快速排序的时间复杂度和稳定性4. 快速排序实现4.1 快速排序C实现4.2 快速排序C++实现4.3 快速排序Java实现 转载请注明出处:http://www.cnblogs.com/skywang1 阅读全文

posted @ 2018-02-24 13:22 AlanTu 阅读(212) 评论(0) 推荐(0) 编辑

常用排序算法(一)冒泡排序

摘要: 冒泡排序 概要 本章介绍排序算法中的冒泡排序,重点讲解冒泡排序的思想。 目录1. 冒泡排序介绍2. 冒泡排序图文说明3. 冒泡排序的时间复杂度和稳定性4. 冒泡排序实现4.1 冒泡排序C实现4.2 冒泡排序C++实现4.3 冒泡排序Java实现 转载请注明出处:http://www.cnblogs. 阅读全文

posted @ 2018-02-24 13:20 AlanTu 阅读(481) 评论(0) 推荐(0) 编辑

Linux内核中双向链表的经典实现

摘要: Linux内核中双向链表的经典实现 概要 前面一章"介绍双向链表并给出了C/C++/Java三种实现",本章继续对双向链表进行探讨,介绍的内容是Linux内核中双向链表的经典实现和用法。其中,也会涉及到Linux内核中非常常用的两个经典宏定义offsetof和container_of。内容包括:1. 阅读全文

posted @ 2018-02-24 12:38 AlanTu 阅读(1458) 评论(0) 推荐(0) 编辑

回溯法 - 数据结构与算法

摘要: 1.回溯法算法思想: 定义: 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 1、回溯法适用:有许多问题,当需要找出它的解 阅读全文

posted @ 2018-02-24 11:07 AlanTu 阅读(2105) 评论(0) 推荐(0) 编辑

迪杰斯特拉Dijkstra算法介绍

摘要: 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。 基本思想 通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。 此外,引进两个集合S和U。S 阅读全文

posted @ 2018-02-24 11:06 AlanTu 阅读(1527) 评论(0) 推荐(0) 编辑

Kruskal算法 - C语言详解

摘要: 最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树。 例如,对于如上图G4所示的连通网可以有多棵权值总和不相同的生成树。 克鲁斯卡尔算法介绍 克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成 阅读全文

posted @ 2018-02-24 11:05 AlanTu 阅读(1037) 评论(0) 推荐(0) 编辑

普里姆Prim算法介绍

摘要: 普里姆(Prim)算法,和克鲁斯卡尔算法一样,是用来求加权连通图的最小生成树的算法。 基本思想 对于图G而言,V是所有顶点的集合;现在,设置两个新的集合U和T,其中U用于存放G的最小生成树中的顶点,T存放G的最小生成树中的边。 从所有uЄU,vЄ(V-U) (V-U表示出去U的所有顶点)的边中选取权 阅读全文

posted @ 2018-02-24 11:05 AlanTu 阅读(975) 评论(0) 推荐(0) 编辑

拓扑排序介绍

摘要: 拓扑排序介绍 拓扑排序(Topological Order)是指,将一个有向无环图(Directed Acyclic Graph简称DAG)进行排序进而得到一个有序的线性序列。 这样说,可能理解起来比较抽象。下面通过简单的例子进行说明! 例如,一个项目包括A、B、C、D四个子部分来完成,并且A依赖于 阅读全文

posted @ 2018-02-24 11:03 AlanTu 阅读(562) 评论(0) 推荐(0) 编辑

深度优先搜索、广度优先搜索

摘要: 深度优先搜索的图文介绍 1. 深度优先搜索介绍 图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通 阅读全文

posted @ 2018-02-24 11:02 AlanTu 阅读(283) 评论(0) 推荐(0) 编辑

图的基本概念

摘要: 图的基本概念 1. 图的定义 定义:图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常被成为"顶点(vertex)",而点与点之间的连线则被成为"边或弧"(edege)。通常记为,G=(V,E)。 2. 图的种类 根据边是否有方向,将图可以划分为:无向图和 阅读全文

posted @ 2018-02-24 11:00 AlanTu 阅读(616) 评论(0) 推荐(0) 编辑

贪心算法

摘要: 贪心算法-霍夫曼编码 霍夫曼编码是一种无损数据压缩算法。在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期 阅读全文

posted @ 2018-02-24 10:57 AlanTu 阅读(291) 评论(0) 推荐(0) 编辑

qsort函数、sort函数

摘要: 先说明一下qsort和sort,只能对连续内存的数据进行排序,像链表这样的结构是无法排序的。 首先说一下, qsort qsort(基本快速排序的方法,每次把数组分成两部分和中间的一个划分值,而对于有多个重复值的数组来说,基本快速排序的效率较低,且不稳定)。集成在C语言库函数里面的的qsort函数, 阅读全文

posted @ 2018-02-24 10:55 AlanTu 阅读(340) 评论(0) 推荐(0) 编辑

并查集

摘要: 并查集(1)-判断无向图是否存在环 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。 Find:确定元素属于哪一个子集。它可以被用来确定 阅读全文

posted @ 2018-02-24 10:54 AlanTu 阅读(293) 评论(0) 推荐(0) 编辑

prim算法

摘要: 一个连通图的生成树是一个极小的连通子图,它包含图中全部的顶点(n个顶点),但只有n-1条边。 最小生成树:构造连通网的最小代价(最小权值)生成树。 prim算法在严蔚敏树上有解释,但是都是数学语言,很深奥。 最小生成树MST性质:假设N=(V,{E})是一个连通网,U是顶点集V的一个非空子集。若(u 阅读全文

posted @ 2018-02-24 10:53 AlanTu 阅读(28969) 评论(2) 推荐(3) 编辑

浅析SkipList跳跃表原理及代码实现

摘要: 本文将总结一种数据结构:跳跃表。前半部分跳跃表性质和操作的介绍直接摘自《让算法的效率跳起来--浅谈“跳跃表”的相关操作及其应用》上海市华东师范大学第二附属中学 魏冉。之后将附上跳跃表的源代码,以及本人对其的了解。难免有错误之处,希望指正,共同进步。谢谢。 跳跃表(Skip List)是1987年才诞 阅读全文

posted @ 2018-02-24 10:49 AlanTu 阅读(647) 评论(0) 推荐(0) 编辑

伸展树

摘要: 伸展树 一、简介:伸展树,或者叫自适应查找树,是一种用于保存有序集合的简单高效的数据结构。伸展树实质上是一个二叉查找树。允许查找,插入,删除,删除最小,删除最大,分割,合并等许多操作,这些操作的时间复杂度为O(logN)。由于伸展树可以适应需求序列,因此他们的性能在实际应用中更优秀。伸展树支持所有的 阅读全文

posted @ 2018-02-24 10:47 AlanTu 阅读(1076) 评论(0) 推荐(0) 编辑

摊还分析

摘要: 摊还分析 本章内容: 1.聚合分析 2.核算法 3.势能法 4.动态表 一 聚合分析 1. 在摊还分析中,我们求数据结构的一个操作序列中所执行的所有操作的平均时间,来评价操作的代价,它不涉及概率,可以保证最坏情况下每个操作的平均性能。 2. 摊还代价:对所有n,一个n个操作的序列最坏情况下话费时间为 阅读全文

posted @ 2018-02-24 10:45 AlanTu 阅读(428) 评论(0) 推荐(0) 编辑

算法集锦(五)

摘要: 求连通图的割点(关节点) 题目:求一个连通图的割点,割点的定义是,如果除去此节点和与其相关的边,图不再连通,描述算法。 分析: 1. 最简单也是最直接的算法是,删除一个点然后判断连通性,如果删除此点,图不再连通,则此点是割点,反之不是割点(图的连通性一般通过深搜来判定,是否能一次搜索完 全部顶点); 阅读全文

posted @ 2018-02-24 10:23 AlanTu 阅读(284) 评论(0) 推荐(0) 编辑

P问题、NP问题和NPC问题

摘要: 什么是P问题、NP问题和NPC问题 这或许是众多OIer最大的误区之一。 你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“ 阅读全文

posted @ 2018-02-24 10:19 AlanTu 阅读(7847) 评论(1) 推荐(3) 编辑

算法集锦(四)

摘要: 归并排序 归并排序算法实现: #include<stdio.h> #include<stdlib.h> #define FatalError( Str ) fprintf( stderr, "%s\n", Str ), exit( 1 ) typedef int ElementType; void 阅读全文

posted @ 2018-02-24 10:09 AlanTu 阅读(173) 评论(0) 推荐(0) 编辑

算法集锦(三)

摘要: 开放定址散列表的实现 #include<stdio.h> #include"fatal.h" typedef char* ElementType; typedef unsigned int Index; typedef Index Position; struct HashTbl; typedef 阅读全文

posted @ 2018-02-24 10:02 AlanTu 阅读(179) 评论(0) 推荐(0) 编辑

AVL平衡二叉搜索树原理及各项操作编程实现

摘要: C语言版 #include<stdio.h> #include "fatal.h" struct AvlNode; typedef struct AvlNode *Position; typedef struct AvlNode *AvlTree; typedef int ElementType ; 阅读全文

posted @ 2018-02-24 09:58 AlanTu 阅读(243) 评论(0) 推荐(0) 编辑

AVL平衡二叉树

摘要: 查找——平衡二叉树(AVL) 排序二叉树对于我们寻找无序序列中的元素的效率有了大大的提高。查找的最差情况是树的高度。这里就有问题了,将无序数列转化为 二叉排序树的时候,树的结构是非常依赖无序序列的顺序,这样会出现极端的情况。 【如图1】: 这样的一颗二叉排序树就是一颗比较极端的情况。我们在查找时候, 阅读全文

posted @ 2018-02-24 09:56 AlanTu 阅读(162) 评论(0) 推荐(0) 编辑

算法集锦(二)

摘要: 二叉查找树(二叉排序树)(C语言) #include<stdio.h> #include "fatal.h" struct TreeNode; typedef struct TreeNode *Position; typedef struct TreeNode *SearchTree; typede 阅读全文

posted @ 2018-02-24 09:54 AlanTu 阅读(158) 评论(0) 推荐(0) 编辑

算法集锦(一)

摘要: 最大子序列和 动态规划的算法: 最小公共子序列的和 #include<stdio.h>int MinSubsequenceSum(const int A[],int n){ int i,sum,MinSum; sum=MinSum=0; for(i=0;i<n;i++) { sum+=A[i]; i 阅读全文

posted @ 2018-02-24 09:49 AlanTu 阅读(164) 评论(0) 推荐(0) 编辑

选择问题 and 字谜游戏问题

摘要: #include <stdio.h> #include <stdlib.h> // 第一题 // 找出N个数的第k个最大者 // 方法1:排序(冒泡),降序找出第k个值 // 方法2:选前k个点进行降序排序,后面的数进行比较, // 如果数比第k个数小则忽略, 复杂度低于方法1 #define TY 阅读全文

posted @ 2018-02-24 09:45 AlanTu 阅读(355) 评论(0) 推荐(0) 编辑

TF-IDF与余弦相似性的应用

摘要: TF-IDF与余弦相似性的应用(一):自动提取关键词 这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题。 有一篇很长的文章,我要用计算机提取它的关键词(Automatic Keyphrase extraction),完全不加以人工干预,请问怎样才能正确做到? 这个问题涉及到数据挖掘、文本处理 阅读全文

posted @ 2018-02-24 09:38 AlanTu 阅读(364) 评论(0) 推荐(0) 编辑

一致性哈希算法

摘要: tencent2012 笔试题附加题问题描述: 例如手机朋友网有 n 个服务器,为了方便用户的访问会在服务器上缓存数据,因此用户每次访问的时候最好能保持同一台服务器。已有的做法是根据 ServerIPIndex[QQNUM%n]得到请求的服务器,这种方法很方便将用户分到不同的服务器上去。但是如果一台 阅读全文

posted @ 2018-02-24 09:35 AlanTu 阅读(154) 评论(0) 推荐(0) 编辑

Cache缓存

摘要: 闲话Cache:始篇 Caching(缓存)在现代的计算机系统中是一项最古老最基本的技术。它存在于计算机各种硬件和软件系统中,比如各种CPU, 存储系统(IBM ESS, EMC Symmetrix…),数据库,Web服务器,中间件等。它的一个重要的作用就是用于弥补不同速度的硬件之间的存取速度的差距 阅读全文

posted @ 2018-02-24 09:33 AlanTu 阅读(2439) 评论(0) 推荐(0) 编辑

布隆过滤器

摘要: 假如有1亿个不重复的正整数(大致范围已知),但是只有1G的内存可用,如何判断该范围内的某个数是否出现在这1亿个数中?最常用的处理办法是利用位图,1*108/1024*1024*8=11.9,也只需要申请12M的内存。但是如果是1亿个邮件地址,如何确定某个邮件地址是否在这1亿个地址中?这个时候可能大家 阅读全文

posted @ 2018-02-24 09:20 AlanTu 阅读(229) 评论(0) 推荐(0) 编辑

上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 24 下一页

导航