随笔 - 106  文章 - 2  评论 - 2017  阅读 - 43万 

随笔分类 -  算法

最优雅的二分查找
摘要:今天复习以前的代码,突然发现插入排序用的二分查找算法实现得很别扭,于是试试重写一个,没想到相当顺利,几分钟就写好并测试通过了:static int BinarySearch(int[] array, int value, int start, int end) { if(start == e... 阅读全文
posted @ 2015-03-21 17:23 小城故事 阅读(1155) 评论(0) 推荐(1) 编辑
准备从头复习算法
摘要:半年多没更新了,太懒了。工作上业务逻辑真是无穷无尽,变更无休无止,还是回来,哪怕随便写点也好。今天就是个微不足道的东西,不过也有点可以深入思考的东西。快速排序一般都是递归实现,我一直以为递归性能上差一点,但可读性。但我前几天试写了一个不用递归的快速排序,发现反而不如递归的版本快: static v... 阅读全文
posted @ 2013-03-03 22:09 小城故事 阅读(477) 评论(0) 推荐(0) 编辑
对AVL树和红黑树的个人理解
摘要:都说编程算法很重要,可真没见几个.NET程序员研究算法的。这些日子非主流地研究了一些小算法,红黑树和AVL树算是其中复杂的了,但实际也就二三百行代码。悲催的是,网上根本找不到C#的理想版本(包括国外网站),寥寥几个,要么有错,要么非主流的实现方式。所谓主流方式,就是用表二叉排序树节点TreeNode... 阅读全文
posted @ 2012-06-06 16:25 小城故事 阅读(17296) 评论(4) 推荐(2) 编辑
最简洁的快速排序算法(C#实现)
摘要:这几天事情不多,回顾一下排序算法。过去虽然也练习过,可现在发现,要重写一遍,不是IndexOutOfRange就是StackOverFlow,反正基本得不到正确结果。让偶情何以堪? 这些简单的排序算法程序应该不需要什么编程功底,写不对的真正原因,还是没有理解算法。以前写的算法代码,一看就不像出... 阅读全文
posted @ 2011-09-30 21:55 小城故事 阅读(1470) 评论(0) 推荐(0) 编辑
重构-打造爱因斯坦谜题最快算法
摘要:上一篇里,阐述了解这道题的思路,并在代码上实现。不过代码还有很多可改进之处。性能方面,虽然比穷举法快得多,此外搜索算法还是比较盲目,效率应该能更上一层楼。 首先是在算法实现最后一步的搜索树递归方法中,发现MatchResult枚举并没有实际用处 var result = conditions[node.Index].Match(guys, ref attempts); if (result == MatchResult.Fail) { if (node.Action != null) node.Action... 阅读全文
posted @ 2010-10-26 19:32 小城故事 阅读(1863) 评论(5) 推荐(3) 编辑
.Net 4.0并行库实用性演练(续)
摘要:接着上一次说,即使用了新的线程安全的集合BlockingCollection,这段代码还是会有问题。 static void testFillParallel() { var list = new BlockingCollection<Person>(9999); Enumerable.Range(1, 99999).AsParallel().ForAll(n => { var name = "Person " + n % 9; if (list.Count(p => p.Name == na... 阅读全文
posted @ 2010-09-10 16:25 小城故事 阅读(1312) 评论(2) 推荐(1) 编辑

点击右上角即可分享
微信分享提示