
算法
君浪
君子不器 浪子不羁
展开
-
单词排序——一道招聘笔试题
正文前几天参加一家公司的实习招聘,笔试中有一道题,是让对单词按字母进行排序。 单词结构体类似如下,其中word中的字符均在小写字母a~z范围内:struct words{ string word; word*next; ...};这是链表结构。 对链表的排序,如果是原址排序,一般复杂度都是O(n2)O(n^2) 对于链表中的关键字——string类型的str,如果进行原创 2016-03-15 22:02:23 · 964 阅读 · 0 评论 -
二叉搜索树的一种构造方法
二叉搜索树,也叫二叉查询树,它的优势,顾名思义,就在于查询。一般在链表或者向量中查询一个元素,需要O(n)O(n) 的时间复杂度,而对于搜索二叉树,最好情况可以仅用O(lgn)O(lgn) 的复杂度。因此它善于大量数据的检索。 二叉搜索树与一般的二叉树不同在于它的元素分布,有如下特点: 对于每个结点,左子树(如果存在)的关键字大小小于该节点的关键字,右子树(如果存在)的关键字大于该结点的关键字原创 2016-03-16 22:23:35 · 3952 阅读 · 1 评论 -
LeetCode笔记:Move Zeros[Difficulty: Easy]
原题:Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.For example, given nums = [0, 1, 0, 3, 12], after ca原创 2016-03-04 21:27:24 · 475 阅读 · 0 评论 -
[算法导论笔记]建立二叉堆
二叉堆是基于数组的数据结构,由在数组上定义的left() right() parent()操作,以及heapsize属性,可以把它视为二叉树。 如图,根节点有两个叶子结点,分别对应的数组下标为1和2,通过left()和right()操作实现(下标位移再加偏移),而叶子结点的父节点通过parent()操作实现。由于此时的heapsize是3,因此数组中下标为3的第四个元素并没有加入堆中。二叉堆分原创 2016-04-16 15:33:45 · 4156 阅读 · 0 评论 -
二值形态学基本操作:腐蚀、膨胀、开运算、闭运算
用在图像处理中的一些基本操作。原创 2017-03-26 08:11:19 · 11976 阅读 · 1 评论 -
K-均值聚类算法及其初始点的选取
K-均值聚类(K-Means Clustering)是一种无监督的聚类方法,即最初并不知道同种类数据的特征,算法会根据数据自身特点进行分类。原创 2017-05-01 20:45:52 · 10597 阅读 · 0 评论 -
解读一段循环冗余校验(CRC)算法程序
今天遇到一段这样的程序,一时半会很难读懂。原创 2017-05-08 23:39:22 · 1902 阅读 · 0 评论