算法
Java技术博文
这个作者很懒,什么都没留下…
展开
-
算法书籍推荐及网络资源 [转]
算法书籍推荐及网络资源 [转]http://hi.baidu.com/relativist/blog/item/b9bef503973c9f773912bb85.html The Art of Computer Programming作者:Donald E. Knuth出版社:中文版由国防大学出版社发行,中文译本书名为《计算机程序设计艺术》转载 2013-04-27 09:08:53 · 762 阅读 · 0 评论 -
C++插入排序
插入排序的基本思想:每次将一个待排序的数据对象按关键码大小插入一个有序的数据序列中,得到一个新的容量加1的数据序列,如此往复直到全部对象插入完毕不同的插入排序算法寻找插入位置的方法不同,这是区别各种插入算法的根本1>直接插入排序基本思想:数据对象存储在顺序表中 ,当插入第i个对象V[i]时,前面的i-1个元素V[0],V[1],...V[i-1]已经排好序,用第i个对象的关键码同已原创 2013-07-11 22:31:15 · 840 阅读 · 0 评论 -
C/C++ 求最大公约数和最小公倍数
1.求最大公约数 (欧几里德算法和扩展欧几里德算法)1.欧几里德算法欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:定理:gcd(a,b) = gcd(b,a mod b)证明:a可以表示成a = kb + r,则r = a mod b假设d是a,b的一个公约数,则有d|a, d|b,而r = a - kb,因此d|r转载 2013-07-02 20:53:19 · 1502 阅读 · 0 评论 -
华为2011上机笔试题2+参考程序
华为2011上机笔试题2+参考程序编程题(共2题,第一题40分,第二题60分,共100分。请上机编写程序,按题目要求提交文件。[详见考试说明]本试题采用自动测试用例进行评分,测试用例不对考生公开,凡不满足提交要求导致不能运行或用例不通过,不予评分)。 1. 识别字符串中的整数并转换为数字形式(40分)问题描述: 识别输入字符串中所有的整数,统计整数个数并将这些字符串形式转载 2013-08-24 18:36:00 · 762 阅读 · 0 评论 -
中缀表达式转后缀表达式并求值
应杨茜小师妹的请求写了这个程序,找找当年的感觉,呵呵。我把中缀转后缀并求值的代码写成了一个类,注释写的很详细,不多说。首先是类声明:[cpp] view plaincopy"font-size:18px;">#ifndef _CALSUFFIX_H_ #define _CALSUFFIX_H_ #include #include #include转载 2013-08-17 16:00:39 · 881 阅读 · 0 评论 -
中缀表达式转换成后缀表达式并求值(C++栈的应用)
/* * biao.cpp * * Created on: 2011-11-25 * Author: allenjin */ #include#include using namespace std; template class Stack{ //自定义堆栈公式化描述 public: Stack(){Top=0;}转载 2013-08-17 16:01:35 · 2308 阅读 · 0 评论 -
中缀表达式转换为后缀表达式(栈的使用)
中缀表达式转换为后缀表达式(栈的使用)中缀表达式如1*2+(2-1), 其运算符一般出现在操作数之间, 因此称为中缀表达式,也就是大家编程中写的表达式。编译系统不考虑表达式的优先级别, 只是对表达式从左到右进行扫描, 当遇到运算符时, 就把其前面的两个操作数取出, 进行操作。为达到上述目的, 就要将中缀表达式进行改写,变为后缀表达式 如上面的表达式1*2+(2-1), 就变为12*转载 2013-08-17 16:02:14 · 878 阅读 · 0 评论 -
华为2014届机试题之田忌赛马
package com.huawei.TianJiSaiMa;import java.util.Scanner;import java.util.List;import java.util.ArrayList;import java.util.Collections;/** * 广义田忌赛马:每匹马都有一个能力指数,齐威王先选马,田忌后选,马的能力相同,则齐威王胜。转载 2013-09-21 08:45:50 · 1581 阅读 · 0 评论 -
[算法] 各种排序算法思想及比较
一、插入排序(Insertion Sort)1. 基本思想: 每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排序数据元素全部插入完为止。2. 排序过程: 【示例】:[初始关键字] [49] 38 65 97 76 13 27 49 J=2(38) [38 49] 65 97 76 13 27 49 J=3(65转载 2013-09-22 14:28:22 · 519 阅读 · 0 评论 -
各种排序算法的比较(转)
各种排序算法的比较(转)1.稳定性比较 插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的 选择排序、希尔排序、快速排序、堆排序是不稳定的2.时间复杂性比较 插入排序、冒泡排序、选择排序的时间复杂性为O(n2) 其它非线形排序的时间复杂性为O(nlog2n) 线形排序的时间复杂性为O(n);3.辅助空间的比较 线形排序、二路归转载 2013-09-22 14:34:20 · 607 阅读 · 0 评论 -
写出float x 与“零值”比较的if语句
写出float x 与“零值”比较的if语句请写出 float x 与“零值”比较的 if 语句: const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x 不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“EPSINON应该是一个很小的值吧 因为计算机在处理浮点数的时候是有误差的,所转载 2013-09-24 22:43:59 · 1199 阅读 · 0 评论 -
从B树、B+树、B*树谈到R 树
从B 树、B+ 树、B* 树谈到R 树 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。出处:http://blog.csdn.net/v_JULY_v 。 第一节、B树、B+树、B*转载 2013-10-22 17:28:18 · 813 阅读 · 0 评论 -
合并两个有序序列
经典写法合并两个有序序列,太简单了吧?还有专门讨论的必要吗?这是一个最简单的 Merge 版本:[cpp] view plaincopytemplateclass InputIter1, class InputIter2, class OutputIter> void merge(InputIter1 first1, InputIter1 last1,转载 2013-06-26 09:57:29 · 986 阅读 · 0 评论 -
选择排序法的几个原则
在多种条件影响下,最优的O表达式的算法不见得最快,最差O表达式的算法也不一定最慢算法的时间复杂性的渐进表示,只是反映了当n增大时,程序执行时间的一种变化趋势,并不能反映算法在实际工作时的效率算法时间复杂性的渐进分析反映了算法本身和排序数据量的关系具有较好渐进性的算法适合于对大数据量的排序,但对小数据量的排序反而不如较差渐进性的算法选择排序法的几个原则:1>当数据量不大时原创 2013-07-11 17:48:44 · 1685 阅读 · 0 评论 -
KMP算法 (C++实现)
KMP算法 (C++实现)// Test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;void get_next(char*t, int next[ ]){ int t_len=strlen(t); int i=0; //求解每个next[i]转载 2013-06-25 21:42:42 · 752 阅读 · 0 评论 -
KMP算法详解
如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。 我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“假如转载 2013-05-30 19:25:53 · 597 阅读 · 0 评论 -
最小生成树之prim算法
最小生成树之prim算法边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权。 最小生成树(MST):权值最小的生成树。 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路。可以把边上的权值解释为线路的造价。则最小生成树表示使其造价最小的生成树。 构造网的最小生成树必须解决下面两个问题: 1、尽可能选取权值小的边,转载 2013-06-07 11:17:51 · 767 阅读 · 0 评论 -
最小生成树--克鲁斯卡尔算法
给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树.求最小生成树的算法(1) 克鲁斯卡尔算法图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间.(2) 普里姆算法图的存贮结构采用邻接矩阵.此方法是按各个顶点连通的步骤进行,需要用一个顶点集合,开始为空集,以后将以连通的顶点陆续转载 2013-06-07 11:23:01 · 827 阅读 · 0 评论 -
最小生成树之kruskal算法
最小生成树之kruskal算法1.kruskal算法假设连通网N=(V,{E})。则令最小生成树的初始状态为只有n个顶点而无边的非连通图T=(V,{}),图中每个顶点自成一个连通分量。在E中选择最小代价的边,若该边依附的顶点落在T中不同的连通分量中,则将该边加入到T中,否则舍去此边而选择下一条代价最小的边,依次类推,直到T中所有顶点都在同一连通分量上为止。示例如下:图中先将每个转载 2013-06-07 11:48:43 · 851 阅读 · 0 评论 -
n*n的ZigZag数组
ZigZag数组就是形如下图的,依次沿对角线增加->减小交替变换的数组00 01 05 06 14 15 27 2802 04 07 13 16 26 29 4203 08 12 17 25 3转载 2013-07-08 10:34:51 · 825 阅读 · 0 评论 -
螺旋队列
螺旋队列 螺旋队列:如下图所示的螺旋队列,以01所在点为坐标原点建立坐标轴,X方向向右为正,Y方向向下为正。如01坐标为(0,0),02坐标为(1,0),03坐标为(1,1)。试找出规律,给出任意坐标(x,y),返回该坐标处的数字,如给出(0,0)返回1,给出(1,1)返回3。43 44 45 46 47 48 4942 21 22 23 24 25 264转载 2013-07-08 11:29:13 · 949 阅读 · 0 评论 -
螺旋队列
螺旋队列的样子如下图:两大规律:1、螺旋规律2、奇数(圈数,或X轴正坐标)平方规律(紫线) 问题描述: 设1的坐标是(0,0),x方向向右为正,y方向向下为正,例如,7的坐标为(-1,-1),2的坐标为(1,0)。编程实现输入任意一点坐标(x,y),输出所对应的数字! 问题解决:从紫线突破。从图中不难转载 2013-07-08 13:56:52 · 997 阅读 · 0 评论 -
螺旋队列问题
螺旋队列问题下面是一个螺旋队列: 73 74 75 76 77 78 79 80 81 72 43 44 45 46 47 48 49 50 71 42 21 22 23 24 25 26 51 70 41 20 7 8转载 2013-07-08 13:57:42 · 746 阅读 · 0 评论 -
2012年10月份,百度笔试题
一、简答题1、列举几个常见的哈希算法,简述哈希算法的主要用途http://blog.csdn.net/zxycode007/article/details/6999984这篇文章介绍的很清楚了。主要用途:查找关键字、文件校验、数字签名2、描述OSI的7层架构,并指出HTTP、UDP、ARP协议在那一层?应用层:为应用程序提供网络服务表示层:确转载 2013-07-08 16:55:28 · 795 阅读 · 0 评论 -
C++实现Kmp字符匹配算法的优化版
C++实现Kmp字符匹配算法的优化版 头文件:KmpAlgorithm.h[cpp] view plaincopy#ifndef KMPALGORITHM_H #define KMPALGORITHM_H #include #include class KmpAlgorithm{ std::s转载 2013-06-25 21:37:37 · 850 阅读 · 0 评论 -
KMP算法C++代码
KMP算法的思想一般数据结构书都有讲,没讲的话google一下,有很多文章解释了其思想。晚上写了写这个代码,虽然不难,但还是费了番功夫调试,出现的主要问题有:无符号整型数据与整型数据比较大小(让我越来越讨厌无符号数!),还有一个问题就是KMP算法本身与求next数组的算法很类似,但是有些微妙的区别,也让调试了几次。 int* GetNextVal(const char *s, in转载 2013-06-25 21:41:23 · 824 阅读 · 0 评论 -
在数组中查找和为给定值的两个数字(排序数组和不排序数组)
(排序数组)题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。、分析:如果我们不考虑时间复杂度,最简单想法是计算任一一个数字与其他n-1个数字的和,判断是否等于给转载 2014-02-13 19:09:20 · 1029 阅读 · 0 评论