摘要: 快排在大规模元素(》100)被证明几乎是效率最高的排序方法, 也是一种分而治之算法的一个典型应用。 快排的思想是: 1)每次选定一个元素作为pivot, 利用pivot对数组进行分区(partition) 2) 大的放在pivot的后面,小的放在pivot前面 3)递归的对新生成的两个分区进行快排 阅读全文
posted @ 2018-01-27 14:39 xuyanran 阅读(114) 评论(0) 推荐(0) 编辑
摘要: Merge Sort 的递归实现, 同时也是算法里面常见的分而治之方法。 先放上一段分而治之的算法定义, 一张图胜过千言万语。 下面是实现代码: 阅读全文
posted @ 2018-01-25 14:06 xuyanran 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 中缀表达式(Infix expression)即符合a op b的格式, 后缀表达式(Post Fix expression)即符合a b op 的格式。为什么要有后缀表达式?原因在于后缀表达式可以很容易的被计算机理解。 举个例子,a*(b+c)/d, 转化为后缀表达式是abc+*d/, 计算机会用 阅读全文
posted @ 2018-01-16 13:13 xuyanran 阅读(529) 评论(0) 推荐(0) 编辑
摘要: Process analysis The solution above uses one stack. If you use two stacks, there are the following two ways. Solution 1 - do pre-order non-recursive f 阅读全文
posted @ 2018-01-15 11:47 xuyanran 阅读(156) 评论(0) 推荐(0) 编辑
摘要: BST Definition BST is short for Binary Search Tree, by definition, the value of right node is always greater or equal to the root node, the value of l 阅读全文
posted @ 2018-01-14 09:00 xuyanran 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 反转链表也是面试时常问到的题目,题目听上去很简单,想要快速正确的写出来,也确实需要很扎实的基本功。 这类简单的题目既有非递归的实现方法,也有递归的实现方法。 非递归实现 非递归实现,模拟的是基本的手动操作, 访问链表中的每一个节点,但是同时要记住当前被访问节点的上一个和下一个节点。这三个指针构成了一 阅读全文
posted @ 2018-01-07 08:27 xuyanran 阅读(1160) 评论(0) 推荐(0) 编辑
摘要: 第一次用C#描述链表,和大学时用C++ 描述链表的感觉很一致,用visual studio很快就可以实现单向链表,双向链表, 和循环链表。 The reference type of C# is a key, and play the same role as pointer in C++. 上一段 阅读全文
posted @ 2018-01-06 10:57 xuyanran 阅读(140) 评论(0) 推荐(0) 编辑
摘要: Problem description Given a text file, show the spell errors from it. (https://www.andrew.cmu.edu/course/15-200/s06/applications/labs/lab3/) Psuedo Co 阅读全文
posted @ 2018-01-01 13:24 xuyanran 阅读(162) 评论(0) 推荐(0) 编辑
摘要: HashTable 主要包含: 扩展: C# 中的HashTable Class 用的是相同的思想,第一级是数组 data【Size】, 每一元素类型是ArrayList<Bucket> Bucket is a custom class, it contains Key, Value propert 阅读全文
posted @ 2017-12-30 01:11 xuyanran 阅读(135) 评论(0) 推荐(0) 编辑