数据结构与算法
文章平均质量分 75
爱神CODE
用你想用的,干你想干的,满嘴跑马车的没一个好东西。
展开
-
Golang以OO的方式实现二叉查找树
二叉查找树是一种满足如下性质的二叉树:(1) 某个节点的左子树中的所有节点的值都比这个节点的值小(2) 某个节点的右子树中的所有节点的值都比这个节点的值大下面有Go实现的非常详尽的代码,采用了Go风格的OO进行了封装。代码中主函数的例子的参照图如下:实现代码:package mainimport ( "fmt")type TreeNode原创 2014-04-12 20:42:04 · 5740 阅读 · 0 评论 -
Golang实现的红黑树
红黑树是一种基于原创 2014-04-13 16:52:16 · 4013 阅读 · 2 评论 -
Golang实现的KMP字符串匹配算法
算法的细节可以参考网上的资料或原创 2014-04-07 20:54:02 · 3271 阅读 · 3 评论 -
Golang快速排序算法
package mainimport ( "fmt")func QSort(arr []int, start int, end int) { var ( key int = arr[start] low int = start high int = end ) for { for low < high { if arr[high] < key {原创 2014-04-10 12:43:20 · 4477 阅读 · 1 评论 -
Golang实现的Base64加密
base64加密是我们经常看到的一种加密方法,比如ESMTP的验证过程和二进制文件的网际传输等都会用到这种编码。base64的加密方法算是比较简单的一种了,其编码过程是将原文按照每 6bit (记住,是以'位'为单位的)为一组对原文进行替换,因为6bit 可以表示的值的范围在0~63(2的6次方,一共64个),所以可以用一个长度为64的字符表对这 6bit 的值进行映射。原创 2014-04-02 13:28:36 · 3238 阅读 · 0 评论 -
用Golang编写的网际校验和算法
func CheckSum(data []byte) uint16 { var ( sum uint32 length int = len(data) index int ) //以每16位为单位进行求和,直到所有的字节全部求完或者只剩下一个8位字节(如果剩余一个8位字节说明字节数为奇数个) for length > 1 { sum += uint32(data[i原创 2014-03-18 20:12:59 · 3445 阅读 · 1 评论 -
预防死锁之银行家算法
银行家算法是一种可以用来预防死锁的检测算法,正像这种算法的名字一样,系统在分配资源情况就和银行家管理银行资金的情况是相似的。银行家要在贷款的时候协调各个客户之间的业务,最好的情况就是就是把当前的资金合理的分配出去,让余下来的资金依然足够应付近期的其他业务,而且能够确保在有新客户要贷款时之前贷出去的资金已经被收回。操作系统在协调各个进程之间的资源占用关系时也可以套用这种方法。银行家算法主原创 2014-11-21 20:28:15 · 6015 阅读 · 1 评论