文章分类 -  算法研究

摘要:插入排序的思想很简单:假设前N-1个数据已经排好序了,第N个数据插到前面已经排好序的数组中。这和生活中一件事情有着异曲同工之妙:玩扑克牌的时候,很多人(包括我)都会按照花色从大小(或反之)进行排序,而每次再拿到新的牌,则插入到合适的位置,其实这就是插入排序的思想。 因此插入排序的过程可以分为两个步骤:1)找到新元素的插入位置;2)将将元素插入到1)中确定的位置,这就需要移动元素了。1)中确定位置我们可以采用简单的顺序遍历的方法得到,但是注意到由于前N-1个元素已经排好序,因此可以使用二分查找的方式实现。前者就是普通的插入排序,而后者就是二分插入排序。 阅读全文

posted @ 2005-07-17 10:29 k_eckel's mindview 阅读(439) 评论(0) 推荐(0)

摘要:计算机的最重要的功能就是用来处理信息的,而涉及到对信息的处理,查找和排序则是其中最为重要的条目。这也难怪一代算法宗师Knuth在其7卷(拟)的巨著《The Art of Programming》中整整第三卷就是查找与排序了。 这里尽量以较为正规的代码风格的代码将这些经典的排序和查找算法描述出来,目的无他,温故而知新。 u 几个要用到的函数 1) 随机产生测试... 阅读全文

posted @ 2005-07-16 17:11 k_eckel's mindview 阅读(507) 评论(0) 推荐(0)

摘要: 同学在MSN CDC电话面试(可惜我在被面试的时候全然没有这么具体的问题了:))中的一个题目:将16进制的字符串转化为10进制数字,例如“1A”,则对应26。题目很简单,实现起来也容易,依稀记得C里面有函数可以转化。刚好很久前有一个工作了的同学问起,自是给了一个方案。昨晚(050703)实在无聊,于是本着“写过才是自己的原则”,写了一个实现,其中对于16进制字符串非法的处理不是很好(返回-1),但是已经不想改了。(自己写的时候才知道原来Horner法则的实现都生疏了不少,思及最近多在模式、架构和软件过程、文档上花时间(项目使然,也没有办法:)),实在不能忘本了。)。 阅读全文

posted @ 2005-07-08 13:21 k_eckel's mindview 阅读(1581) 评论(1) 推荐(0)