数据结构与算法
文章平均质量分 76
超纯の小白兔
华为云高级工程师
展开
-
python 图的遍历-深度优先和广度优先
Python的图实现有很多别人已经写好的(比如我下面写的就是参考python-graph),可是不适合一个刚开始的学习的人,我就简化了一下,实现可深度优先和广度优先遍历。#!/usr/bin/env python#-*- coding:utf8 -*-class Graph(object): def __init__(self, *args, **kwargs原创 2014-06-04 16:52:17 · 16625 阅读 · 0 评论 -
C#使用UDP实现可靠的传输传输(数据包的分组发送)
在做c#中面向无连接的传输时用到了UDP,虽然没有TCP稳定可靠。但是效率是要高些,优势也有,缺点也有就是有的时候要丢包,有的时候不得不用UDP,但是如何才能比较稳定的实现可靠传输呢,这是一个问题。TCP传输数据的时候没有大小限制,但是UDP传输的时候是有大小限制的,我们怎么才能够实现大数据的稳定传输呢。我们想到了,把数据包分包。把一个大数据分割为一系列的小数据包然后分开发送,然后服务原创 2014-01-26 17:22:44 · 21025 阅读 · 5 评论 -
c#线性表
顺序表类SeqList的实现说明如下所示。public class SeqList : IListDS {private int maxsize; //顺序表的容量private T[] data; //数组,用于存储顺序表中的数据元素private int last; //指示顺序表最后一个元素的位置//索引器public T this[int index]{get{retu原创 2014-01-31 23:05:01 · 2364 阅读 · 0 评论 -
有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。问剩下第几个孩子。
package com.zz;import java.util.Vector;public class test1 { /** * @param args */ public static void main(String[] args) { Vector a = new Vector(); for(int i=1; i<=10; i++)原创 2014-01-10 21:46:29 · 4349 阅读 · 0 评论 -
要安排:3个A国人,3个B国人,3个C国人坐成一排,要求不能使连续的3个人是同一个国籍.求所有不同方案的总数?
package com.dati;public class test11 { static int sum = 0; // 不同方案总个数 // 检查是否有同一国人连续3个 public static boolean check(char[] c){ int count = 1; // 初始个数 for(int i=0;i<c.length-1;i++){原创 2014-01-10 22:04:23 · 2158 阅读 · 0 评论 -
c#和java中执行sql文件脚本的代码(非常有用)
c#和java对sql文件的解析原创 2014-01-17 18:24:09 · 3890 阅读 · 0 评论 -
巧排扑克牌
小明刚上小学,学会了第一个扑克牌“魔术”,到处给人表演。魔术的内容是这样的:他手里握着一叠扑克牌:A,2,....J,Q,K 一共13张。他先自己精心设计它们的顺序,然后正面朝下拿着,开始表演。只见他先从最下面拿一张放到最上面,再从最下面拿一张翻开放桌子上,是A;然后再从最下面拿一张放到最上面,再从最下面拿一张翻开放桌子上,是2;......如此循环直到手中只有一张牌,翻开放桌子上,刚好是原创 2014-01-10 22:02:59 · 1290 阅读 · 0 评论 -
以下的静态方法实现了:把串s中第一个出现的数字的值返回。
package com.zz;public class test5 { public static void main(String args[]){ System.out.println(getFirstNum("qwqwqw12dddd")); } public static int getFirstNum(String s) { if(原创 2014-01-10 21:59:10 · 1198 阅读 · 1 评论 -
假设有两种微生物 X 和 YX出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。 现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。 如果X=10,Y=90 呢? 本题的要求就是写出这两种初始条件下,60分钟后Y的数目。 题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只 Y 就是最终导致 Y 种群灭绝的最后一根稻草!原创 2014-01-10 21:33:24 · 5426 阅读 · 5 评论 -
c#宽度优先的网络爬虫
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using To原创 2014-01-10 18:01:02 · 4265 阅读 · 1 评论 -
某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观
拦截导弹时间限制:1 秒内存限制:32 兆特殊判题:否提交:577解决:238题目描述:某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。 输入:每组输入有两行,第一行,输入雷达捕捉到的敌国导弹的数量k(原创 2013-11-29 23:12:08 · 33939 阅读 · 3 评论 -
数据结构图的定义
一、图的存储结构1.1 邻接矩阵图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为:看一个实例,下图左就是一个无向图。从上面可以看出,无向图的边数组是一个对称矩阵。所谓对称矩阵就是n阶矩阵的元满足aij= aji。即从矩阵的转载 2013-11-23 09:57:00 · 6189 阅读 · 0 评论 -
网络蜘蛛核心代码c#版
using System;using System.Collections.Generic;using System.Text;using System.IO;using System.IO.Compression;using System.Xml;using System.Web;using System.Collections;using System.Runt原创 2013-11-19 23:27:12 · 2124 阅读 · 0 评论 -
python 图 遍历-深度优先和广度优先 II
在上一篇(python 图 遍历-深度优先和广度优先)的代码上加了最小生成树和拓扑序列功能。代码如下:#!/usr/bin/env python#-*- coding:utf8 -*-import copyclass Graph(object): def __init__(self, *args, **kwargs): self.node_n原创 2014-06-04 16:54:04 · 3113 阅读 · 1 评论 -
Bit-Map实现海量数据映射的简单算法
Bit-Map实现海量数据映射的简单算法 (转自张季伦空间) 最近一直在搞搜索引擎,准确的说是丢了一个月又开始鼓捣搜索引擎,在做避免网页重复搜索时遇到了困难;打算用hash来映射url字符串从而避免重复搜索(神马是hash我就不重复了,自己补数据结构去),但是考虑到网页url的海量性,做一个demo的搜索引擎出来也不要太寒酸,所以设计的网页索引量预计在数千万到数亿左右,如果用朴素的ha原创 2013-10-04 11:06:52 · 5063 阅读 · 1 评论 -
回文距离计算
Njzy在对回文数的学习过程中发现了一个有趣的问题.这个问题是求一个数的回文距离。一个数的回文距离的定义是它减去一个回文数的绝对值的最小值。比如:121的回文距离就是0,因为|121-121|=0,123的回文距离是2,|123-121|=2using System;using System.Collections.Generic;using System.Linq;原创 2015-01-19 15:55:42 · 1032 阅读 · 0 评论 -
Trie-Tree字典树
本文转自 http://www.cnblogs.com/gaochundong 作者:Dennis Gao 大神字典树(Trie)是一种很特别的树状信息检索数据结构,如同其名,它的构成就像一本字典,可以让你快速的进行字符插入、字符串搜索等。Trie 一词来自 retrieval,发音为 /tri:/ "tree",也有人读为 /traɪ/ "try"。字典树设计的核转载 2015-01-31 13:18:00 · 1006 阅读 · 0 评论 -
内存数据库中的索引技术
图2-1T-Tree的结点T-tree索引用来实现关键字的范围查询。T-tree是一棵特殊平衡的二叉树(AVL),它的每个节点存储了按键值排序的一组关键字。T-tree除了较高的节点空间占有率,遍历一棵树的查找算法在复杂程度和执行时间上也占有优势。现在T-tree己经成为内存数据库中最主要的一种索引方式。T-tree具有以下特点:1)左子树与右子树之差不超过1,2)在一个存储节原创 2015-01-07 12:16:37 · 23053 阅读 · 7 评论 -
C#自己实现线程池功能(一)
线程池的技术背景在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源,所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些"池化资源"技术产生的原因。比如大家所熟悉的数据库连接池正是遵循这一思想而产生的,本文将介绍的线程池技术同样符合这一思想原创 2014-10-20 19:06:56 · 15910 阅读 · 0 评论 -
C#连续区间最大和求解
这里有两个算法 第一个原创 2014-10-03 19:15:25 · 950 阅读 · 0 评论 -
猜数字
package com.zz;import java.util.Scanner;public class test3 { public static void main(String[] args) { System.out.println("请在心中想好一个数字(1~100),我来猜"); System.out.println("我每猜一个数字,你要告诉我是“原创 2014-01-10 21:52:00 · 1371 阅读 · 0 评论 -
C语言实现php服务器
HTTP协议的作用原理连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:GET 路径/文件名 HTTP/1.0文件名指出所访问的文件,HTTP/1.0指出Web原创 2014-10-31 23:25:34 · 7313 阅读 · 0 评论 -
C#打开tif文件时内存溢出(System.OutOfMemoryException)解决办法
前言原创性声明 此博文的出处 为 http://blog.csdn.net/zhujunxxxxx/article/details/39251353如果进行转载请注明出处。本文作者原创,邮箱zhujunxxxxx@163.com,如有问题请联系作者我在做一个统计图片长和宽的软件时遇到一个问题,本来是用的 Image img = null; img原创 2014-10-31 10:24:11 · 12961 阅读 · 0 评论 -
C#使用数组实现二叉查找树
原创性申明:本文地址是 http://blog.csdn.net/zhujunxxxxx/article/details/40658925 转载请注明出处。作者联系邮箱 zhujunxxxxx@163.com二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。它或者是一棵空树;或者是具有下列性质的二叉树:(1)若原创 2014-11-08 21:08:37 · 8390 阅读 · 0 评论 -
数据库技术之存储过程设计与实现(三)
原创性声明此博文的出处 为 http://blog.csdn.net/zhujunxxxxx/article/details/39251241如果进行转载请注明出处。本文作者原创,邮箱zhujunxxxxx@163.com,如有问题请联系作者 在前原创 2014-09-13 14:27:17 · 7563 阅读 · 0 评论 -
java分词统计单词(简单基于字典)
最近帮他们做一个java分词的系统,没有用很复杂的方法实现。主要是原创 2014-09-23 21:27:13 · 3110 阅读 · 0 评论 -
数据库技术之存储过程设计与实现(二)
原创性申明此博文的出处 为 http://blog.csdn.net/zhujunxxxxx/article/details/39251241如果进行转载请注明出处。本文作者原创,邮箱zhujunxxxxx@163.com,如有问题请联系作者存储过程的生成流程图在上一篇的文章中我们知道了由一个存储过程的语句生成一个语法树,但是这个语法树的保存在数据库系统中,这里给出一个存储过程的存原创 2014-09-13 14:09:07 · 13339 阅读 · 0 评论 -
数据库技术之存储过程设计与实现(一)
语法词法解析这一部分我在之前的博文 《使用flex和bison实现的sql引擎解析》中讲过,如何利用flex 和bison 进行词法和语法的解析,我不在多讲,这一部分可以参考一本书flex&bison中文版这本书详细的介绍了进行词法语法解析的步骤原创性声明此博文的出处 为 http://blog.csdn.net/zhujunxxxxx 如果进行转载请注明出处。本文作者原创原创 2014-09-13 13:47:20 · 13464 阅读 · 6 评论 -
数据结构之 非递归中序遍历二叉树
void inoder(Node *root){ Node *statck[maxSize]; int top=-1; Node *p; if(root!=NULL) { p=root; while(top!=-1||p!=NULL) { while(p!=NULL) { statck[++top]=p; p=p->le原创 2013-10-26 23:43:51 · 1138 阅读 · 0 评论 -
数据结构之 非递归方法先序遍历二叉树
void preoder(Node *root){ Node *statck[maxSize]; int top=-1; Node *p; if(root!=NULL) { statck[++top]=root; while(top!=-1) { p=statck[top--]; visit(p); if(p->rightChild原创 2013-10-26 23:38:32 · 1105 阅读 · 0 评论 -
暴力破解算法,基本实现
using System;using System.Collections.Generic;using System.Text;namespace 暴力算法{ class Program { static void Main(string[] args) { int maxLength = 5; //设置可能最长的密原创 2013-09-23 12:15:16 · 3606 阅读 · 0 评论 -
大数阶乘的实现
当提到计算一个数的阶乘时,也许很多人都能够轻易的解决,但很多人可能会发现,当计算100或200甚至更大的数的阶乘时,发现一般的方法无法实现,因为就拿200来说,200的阶乘的最后结果的位数达375位,一般的数据类型(如int)根本无法存储,那就得采用其他的方法来解决。说到这里,可能有人已经想到了,没错,这与求任意位数Pi值及大整数运算的思想都是相似的,即:采用数组来存储。关于计算任意位数P转载 2013-10-09 10:39:56 · 926 阅读 · 0 评论 -
数据结构之 迪杰斯特拉最短路径算法
void printfPath(int path[],int a){ int statck[maxSize],top=-1; while(path[a]!=-1) { statck[++top]=a; a=path[a]; } statck[++top]=a; while(top!=-1) { cout<<statck[top--]<<" ";原创 2013-10-07 12:43:37 · 1278 阅读 · 0 评论 -
普莱姆最小生成树算法
//普莱姆最小生成树算法void Prim(MGraph g,int v0,int &sum){ int lowcost[maxSize],vset[maxSize],v; int i,j,k,min; v=v0; for(i=1;i { lowcost[i]=g.edges[v0][i]; vset[i]=0; } vset[v0]=1;//并入树原创 2013-10-06 22:54:59 · 2157 阅读 · 0 评论 -
十七道海量数据面试题
前言本博客内曾经整理过有关海量数据处理的10道面试题(十道海量数据处理面试题与十个方法大总结),此次除了重复了之前的10道面试题之后,重新多整理了7道。仅作各位参考,不作它用。同时,程序员编程艺术系列将重新开始创作,第十一章以后的部分题目来源将取自下文中的17道海量数据处理的面试题。因为,我们觉得,下文的每一道面试题都值得重新思考,重新深究与学习。再者,编程艺术系列的前十章也是这么来的。若转载 2013-10-05 12:00:31 · 1083 阅读 · 0 评论 -
十道大数据的题
第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32转载 2013-10-05 11:59:04 · 931 阅读 · 0 评论 -
数据结构之 图的存储结构和遍历方式
// 图.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "malloc.h"#define maxSize 100 typedef struct ArcNode{ int adjvex; struct ArcNode *nextNode; int info;}ArcNode;typedef struct VNode原创 2013-10-03 00:01:18 · 4179 阅读 · 1 评论 -
数据结构之 图的操作
一、图的存储结构1.1 邻接矩阵 图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 看一个实例,下图左就是一个无向图。 从上面可以看出,无向图的边数组是一转载 2013-10-01 16:09:54 · 1081 阅读 · 0 评论 -
数据结构之 排序
一、排序相关概念 根据在排序过程中待排序的记录是否全部被放置在内存中,排序分为:内排序和外排序。 内排序是在排序整个过程中,待排序的所有记录全部被放置在内存中。外排序是由于排序的记录个数太多,不能同时放置在内存中,整个排序过程需要在内外存之间多次交换数据才能进行。 根据排序过程中借助的主要操作,把内排序分为:插入排序、交换排序、选择排序和归并排序。转载 2013-10-01 20:59:36 · 992 阅读 · 0 评论 -
数据结构之 最短路径2
上一篇文章我们通过迪杰斯特拉算法解决了从某个源点到其余各顶点的最短路径问题。从循环嵌套很容易得到此算法的时间复杂度为O(n^2)。可是怎么只找到从源点到某一个特定终点的最短路径,其实这个问题和求源点到其他所有顶点的最短路径一样复杂,时间复杂度依然是O(n^2)。 此时比较简单方法就是对每个顶点当作源点运行一次迪杰斯特拉算法,等于在原有算法的基础上,再来一次循环,此时整个算法的时间复杂度为转载 2013-10-01 20:57:23 · 889 阅读 · 0 评论