插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,终于将全部无序区元素都移动到有序区完毕排序。要点:设立哨兵,作为暂时存储和推断数组边界之用。实现:VoidInsertSort(NodeL[],intlength){Inti,j;/...
分类:
其他好文 时间:
2014-06-02 14:02:13
阅读次数:
303
最近准备重温一下算法导论,感谢大网易把MIT算法导论课程全部贴出来,地址为:http://v.163.com/special/opencourse/algorithms.html在线看时,网速实在太慢,于是决定下载下来,一个一个的下载不是我等IT男所能忍受的,用迅雷抓取吧,不是特别爽,恰巧前两天刚刚...
分类:
编程语言 时间:
2014-06-02 13:26:32
阅读次数:
511
讲完了算法的运行时间,现在讲一下关于算法的内存占用率。
内存单位
在计算机中,内存是通过字节来表示的,一个字节表示8个位。1KB是2^10字节。
数据类型占用的内存
在32位系统中,一个指针占用4个字节。在64位系统中一个指针占用8个字节。本课程中使用64位机器,一个指针占用8字节。
基本数据类型
...
分类:
其他好文 时间:
2014-06-01 16:24:44
阅读次数:
204
本节主要讲解的是算法的复杂度。
算法性能
算法的性能分为三种:
最佳情况:计算时间最短的情况
最差情况:计算时间最长的情况
平均情况:随机输入的期望开销
以二分查找为例
最佳情况是1,因为第一次就有可能找到需要找的整数。
最差情况是logN
平均情况是logN
算法复杂度
...
分类:
其他好文 时间:
2014-06-01 15:57:46
阅读次数:
220
本节讲的是并查集的第一种实现方法,这种方法查找操作开销很小而合并操作开销比较大。
数据结构
假设有N个节点,那么该算法的数据结构就是一个包含N个整数的数组id[]。
判断操作
判断节点p和节点q是否相连就是判断id[p]和id[q]的值是否一致。
合并操作
合并节点p和节点q就是将id数组中所有的id[...
分类:
其他好文 时间:
2014-06-01 14:55:21
阅读次数:
202
本节讲的是并查集的另外一种实现方法。这种方法的合并操作开销很小,但是查找操作开销很大。
数据结构
这种算法的数据结构和快速查找方法的数据结构是一样的,也是N个整数组成的数组。
数组中每个元素id[i]的含义是指i的上级是id[i]。
根节点
一个节点的根节点就是id[id[id[...id[i]....]]],一直循...
分类:
其他好文 时间:
2014-06-01 14:52:52
阅读次数:
225
本节讲的是并查集的基本概念。
算法的开发步骤
对问题进行数学建模
寻找一个能够解决问题的算法
运行算法检测速度和内存是否符合要求
如果达不到要求,找出原因
寻找一种方法来解决问题
循环步骤,直到满意为止
以上就是算法开发比较科学的方法。算法开发完成之后需要进行数学分析。
并查集问题
...
分类:
其他好文 时间:
2014-06-01 14:15:14
阅读次数:
185
经典排序算法:归并排序法 让算法会说话,让程序自己告诉我们怎么回事...
分类:
其他好文 时间:
2014-06-01 14:00:26
阅读次数:
264
题目:
给定一个字符串S,一个字符串数组L,找出S中所有这样的子串起点,该子串包含L中的所有元素。
说明:
1)L中存在重复的元素
2)子串不允许间断,即子串从开始到找全L中的所有元素之前,子串中不允许包含L以外的东西,而且,即使当前处理的子串是L中含有的,但是前面已经找够了,这个多余的也是不合法的,若此时还有L中的其他元素没找到,从这个起点开始也是不成功的。
3)L在S中出现的...
分类:
其他好文 时间:
2014-06-01 12:54:53
阅读次数:
192