随笔分类 - Data structure
摘要:数据结构大体成上可以分成两种:1. 线性结构.2. 非线性结构( 树,图)1. 什么是线性结构 大概上可以这样定义: 加入所有的节点可以用一条直线连接起来. 就是线性结构...2. 线性机构也可以分成两种: 1) 连续存储 (数组) 也就是指每1个节点在物理内存上是相连的. 2) 离散存储(链表) 节点在物理内存上并不一定相连, 而是利用指针来关联. 这篇文章主要讲的第一种.3. 什么是数组 数组就是在内存里物理连续的一段元素的集合 注意: 数组里面的元素不一定是数. 可以是任何类型, 但是每个元素的类型和大小必须相等. 而且这里的数组并不是指C语言里的数组类型, 而是数据结构的一种. 通常在
阅读全文
摘要:1. 时间复杂度 算法核心部分大概要执行的次数. 而非执行时间. 为什么不能是执行时间. 是因为1个算法在不同的机器和不同的环境中执行时间可能有巨大的差别. 而什么是核心部分大概要执行的时间? 就是假设算法是1个循环, 那么循环里面的部分被循环执行的次数. 例如1个算法 for (i =0; i <n ;i++){ main_part(); } 他的核心部分main_part() 被执行了n次, 也就是说随着n的增长. 被执行的次数也随着线性增长. 我们可以说这个算法的时间复杂度是 O(n) 而另1个算法 for (i=0; i<n; i++){ for (j=0; j<n;
阅读全文
摘要:既然是详解, 就从最基础的讲起了. 1. Bit(位) Bit计算机是计算机最小的存储单位, 大家都知道计算机实质上都是用二进制数0或者1来存储数据的, 所以Bit实际上可以看成存放1个二进制数字的1个位置. 也就是说bit只有2种值, 0 或者 1, 所以1个bit能存放1个布尔类型的值(boolean,是或者否). 如果一个布尔类型被存放在1个bit中, 自然这个变量就占用1个bit了, 无论这个值是1或者0, 它都占用1个bit... 2. Byte(字节) 这个就厉害了, 因为我们平常讲的1个文件占多少KB, MB... 1个硬盘占多少GB.. 等后面的这个B, 指的就是字节Byt..
阅读全文
摘要:这篇文章是参考视频 思胜 ASP.Net C#培训-7-3-下午-1-哈希表基本原理.wmvhttp://v.youku.com/v_show/id_XMjYwNjEwMDg0.html所做的学习笔记..=================================================================== 在实际上的程序实现中, 有1个经典原理, 叫做数量决定质量. 这个原理是什么意思呢, 举个例子, 当我们查询从一些数量比较小的数据里查询时, 算法和代码的好坏其实不明显. 但是当数据数量变得巨大,甚至从海量数据里查询时, 算法和代码的质量差别就十分明显了...
阅读全文
摘要:1. 折半查找法定义 折半查找法,也称为二分查找法, 二分搜索, 是一种在有序数组中查找某一特定元素的搜索算法.搜索过程中从数组的中间元素开始, 如果中间元素正好是要查找的元素, 则搜索过程结束;如果某一特定元素大于或者小于中间元素, 则在数组大于或小雨元素的那一半中查找, 而且跟开始一样从中间元素开始比较. 若某1个步骤中数组为空, 则代表找不到. 这种搜索算法每一次比骄傲都使搜索范围缩小一半. -- 摘自维基百科. 2. 折半查找法分析 从定义中可以看出折半查找法有几个特性. 2.1 先决条件: 要搜索的数据已经排好序 当然, 怎样将数据排序也是1个算法, 这里先不考究了, 但是要使用..
阅读全文
摘要:设想一下,你有一个包含约一千条记录的数据文件,比如一个小企业的客户记录,还有一个程序,它把记录读到内存中进行处理。每个记录包含一个唯一的五位数的客户ID号、客户名字、地址、帐户结余等等。假设记录不是按客户ID号顺序分类的,所以,如果程序要将客户ID号作为“key”来查找一个特殊的客户记录,唯一的查找方法就是连续地搜索每个记录。有时侯,它会很快找到你需要的记录;但有时侯,在程序找到你需要的记录前,它几乎已搜索到了最后一条记录。如果要在1,000条记录中搜索,那么查找任何一条记录都需要程序平均查核500.5((1000+1)/2)条记录。如果你常需要查找数据,你应该需要一个更快的方法来找到一条记录
阅读全文