- 博客(23)
- 资源 (8)
- 问答 (1)
- 收藏
- 关注
转载 浅谈算法和数据结构: 十一 哈希表
浅谈算法和数据结构: 十一 哈希表在前面的系列文章中,依次介绍了基于无序列表的顺序查找,基于有序数组的二分查找,平衡查找树,以及红黑树,下图是他们在平均以及最差情况下的时间复杂度:可以看到在时间复杂度上,红黑树在平均情况下插入,查找以及删除上都达到了lgN的时间复杂度。那么有没有查找效率更高的数据结构呢,答案就是本文接下来要介绍了散列表,也叫哈希表(Hash Table)什
2015-03-27 17:09:44 529
转载 浅谈算法和数据结构: 十 平衡查找树之B树
浅谈算法和数据结构: 十 平衡查找树之B树前面讲解了平衡查找树中的2-3树以及其实现红黑树。2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key。维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。B树,概括来说是一个节点
2015-03-27 17:08:38 786
转载 浅谈算法和数据结构: 九 平衡查找树之红黑树
浅谈算法和数据结构: 九 平衡查找树之红黑树前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree)定义红黑树的主要是像是对2-3查找树进
2015-03-27 17:07:43 746
转载 浅谈算法和数据结构: 八 平衡查找树之2-3树
浅谈算法和数据结构: 八 平衡查找树之2-3树前面介绍了二叉查找树(Binary Search Tree),他对于大多数情况下的查找和插入在效率上来说是没有问题的,但是他在最差的情况下效率比较低。本文及后面文章介绍的平衡查找树的数据结构能够保证在最差的情况下也能达到lgN的效率,要实现这一目标我们需要保证树在插入完成之后始终保持平衡状态,这就是平衡查找树(Balanced Search
2015-03-27 17:07:26 548
转载 浅谈算法和数据结构: 七 二叉查找树
浅谈算法和数据结构: 七 二叉查找树前文介绍了符号表的两种实现,无序链表和有序数组,无序链表在插入的时候具有较高的灵活性,而有序数组在查找时具有较高的效率,本文介绍的二叉查找树(Binary Search Tree,BST)这一数据结构综合了以上两种数据结构的优点。二叉查找树具有很高的灵活性,对其优化可以生成平衡二叉树,红黑树等高效的查找和插入数据结构,后文会一一介绍。一 定义
2015-03-27 17:05:23 534
转载 浅谈算法和数据结构: 六 符号表及其基本实现
浅谈算法和数据结构: 六 符号表及其基本实现前面几篇文章介绍了基本的排序算法,排序通常是查找的前奏操作。从本文开始介绍基本的查找算法。在介绍查找算法,首先需要了解符号表这一抽象数据结构,本文首先介绍了什么是符号表,以及这一抽象数据结构的的API,然后介绍了两种简单的符号表的实现方式。一符号表在开始介绍查找算法之前,我们需要定义一个名为符号表(Symbol Table)的抽象数据
2015-03-27 17:03:58 509
转载 浅谈算法和数据结构: 五 优先级队列与堆排序
浅谈算法和数据结构: 五 优先级队列与堆排序在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象。最简单的一个例子就是,在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话。在这种情况下,我们的数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数据结构就是优先级队列(Priorit
2015-03-27 17:03:15 535
转载 浅谈算法和数据结构: 四 快速排序
浅谈算法和数据结构: 四 快速排序上篇文章介绍了时间复杂度为O(nlgn)的合并排序,本篇文章介绍时间复杂度同样为O(nlgn)但是排序速度比合并排序更快的快速排序(Quick Sort)。快速排序是20世纪科技领域的十大算法之一 ,他由C. A. R. Hoare于1960年提出的一种划分交换排序。快速排序也是一种采用分治法解决问题的一个典型应用。在很多编程语言中,对数组,列
2015-03-27 17:02:02 754 4
转载 浅谈算法和数据结构: 三 合并排序
浅谈算法和数据结构: 三 合并排序合并排序,顾名思义,就是通过将两个有序的序列合并为一个大的有序的序列的方式来实现排序。合并排序是一种典型的分治算法:首先将序列分为两部分,然后对每一部分进行循环递归的排序,然后逐个将结果进行合并。 合并排序最大的优点是它的时间复杂度为O(nlgn),这个是我们之前的选择排序和插入排序所达不到的。他还是一种稳定性排序,也就是相等的元素在序列中的相对位
2015-03-27 17:00:27 579
转载 浅谈算法和数据结构: 二 基本排序算法
浅谈算法和数据结构: 二 基本排序算法本篇开始学习排序算法。排序与我们日常生活中息息相关,比如,我们要从电话簿中找到某个联系人首先会按照姓氏排序、买火车票会按照出发时间或者时长排序、买东西会按照销量或者好评度排序、查找文件会按照修改时间排序等等。在计算机程序设计中,排序和查找也是最基本的算法,很多其他的算法都是以排序算法为基础,在一般的数据处理或分析中,通常第一步就是进行排序,比如说二分查
2015-03-27 16:58:02 496
转载 浅谈算法和数据结构: 一 栈和队列
最近晚上在家里看Algorithems,4th Edition,我买的英文版,觉得这本书写的比较浅显易懂,而且“图码并茂”,趁着这次机会打算好好学习做做笔记,这样也会印象深刻,这也是写这一系列文章的原因。另外普林斯顿大学在Coursera 上也有这本书同步的公开课,还有另外一门算法分析课,这门课程的作者也是这本书的作者,两门课都挺不错的。计算机程序离不开算法和数据结构,本文简单介绍栈(St
2015-03-27 16:56:03 653
原创 一个有n个整数的递增有序数组。对它进行向左或向右循环移动若干次后,要求给出一个代码实现,尽可能快地从这个数组中寻找指定值所在的位置
题目:一个有n个整数的递增有序数组。对它进行向左或向右循环移动若干次后,要求给出一个代码实现,尽可能快地从这个数组中寻找指定值所在的位置,不在数组中返回-1.例如:输入:5 (然后在数组(15 16 19 20 25 1 3 4 5 7 10 14)中寻找5 的位置) 输出: 8 (为5 在数组的下标)对于给定的这道题很多人考虑效率都会用折半查找,这里说一下我的思路:
2015-03-27 15:21:09 1077
原创 起泡排序的进一步优化:快速排序
起泡排序不管怎样执行比较的趟数还是比较多,为了减少趟数,所以有了快速排序排序原理:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组
2015-03-22 23:38:38 628
原创 起泡排序(冒泡排序)新理解
以前学起泡排序的时候只是知道它的思路及实现,并没有好好总结归纳一下,那么现在就来补充一下。首先假设初始键值序列为 [50 13 55 97 27 38 49 65]第一趟排序结果为 [13 50 55 27 38 49 65] 97第二趟排序结果为 [13 50 27
2015-03-22 01:45:16 2997 3
原创 LeetCode: Reverse Integer
Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321click to show spoilers.Have you thought about this?Here are some good questions to ask before coding.
2015-03-21 00:48:25 506
原创 linux下用vi,vim编辑时退出编辑模式(wq)无法保存退出
之前遇到过这种问题,其实解决的办法很简单,退出编辑模式回到一般模式后,shift+z连续操作两次,就可以保存vi编辑的内容退出了
2015-03-18 12:11:56 36897 2
原创 SSH中json数据的封装与easyui里json的显示
以前使用php的时候发现json的构造解析非常简单,但是呢,后来使用java的时候却发现java中要稍微复杂一点,所以呢在这里写一下我的实现方法首先我是在这下面建了一个工具包,专门用来构造json的,代码package com.test.tools; import java.io.IOException;import java.io.PrintWriter; i
2015-03-16 19:08:19 1702
原创 php无限分类
很早之前用过的一个php无线分类方法,采用的是递归的思路,这里分享给大家//$data为从数据库取出的分类数据,$pid为上级分类id,$level为分类的层级,这里限定为10级,$keyword为分类名function genCate($data, $pid =0, $level = 0,$keyword){if($level ==10)break;$l = st
2015-03-16 18:12:36 578
转载 Centos6.3安装配置svn(转载自博客园)
安装说明系统环境:CentOS-6.3安装方式:yum install (源码安装容易产生版本兼容的问题)安装软件:系统自动下载SVN软件 检查已安装版本 #检查是否安装了低版本的SVN[root@localhost /]# rpm -qa subversion#卸载旧版本SVN[root@localhost modules]# yum remove subve
2015-03-10 23:06:00 517
原创 error:105 Access denied for user 'root'@'localhost' (using password:YES)
使用mysql数据库的时候,有时会遇到这个问题,而网上有些解决办法既复杂,而且基本都是ctrl+c,ctrl+v,所以今天为大家提供一下我的解决方法一:在mysql安装目录下找到my.ini文件ctrl+f 查找Mysqld,在[Mysqld]后面加上skip-grant-tables,保存关闭二:打开cmd,直接输入 mysql -u root -p回车,这时如果要求密码,直接回车(
2015-03-09 22:25:04 725
原创 linux学习笔记:linux中文件的基本操作
这里简单的给大家介绍一下linux中文件的基本操作1.文件及文件夹的创建文件夹的创建,命令:mkdir filename例子:新建一个demo文件夹到home目录下mkdir /home/test文件的创建,命令:vi,touch例子:新建一个text.txt文件到home目录下vi /home/text.txt或者touch /home/text.txt当然文
2015-03-08 15:43:04 609
原创 linux学习笔记:navicate for mysql连接linux服务器上的mysql出现错误:1130 - Host'ClientIP' is not allowed to connect to
如果出现1130 - Host'ClientIP' is not allowed to connect to this MySQL server这种错误。解决方法是
2015-03-07 23:18:54 1378
原创 linux学习笔记:本地如何上传文件到linux服务器
远程操作linux服务器的软件,目前我用的是putty和securecrt,当然或许会有更好的软件,上传文件的时候不知道怎么上传,那么可以使用securert首先用ssh连接到linux服务器,然后设置上传的文件的本地路径(这步感觉可以省略),选择Options->Session Options->Terminal->X/Y/Zmodem即可设置保存,然后在securecrt中输入命令切换到要
2015-03-07 22:03:54 1141
怎样修改一个php站并自己完成后台的工作?
2013-12-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人