摘要:
(radixsort)则是属于“分配式排序”(distribution sort),基数排序法又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比较性排序法。基数排序(Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是 阅读全文
摘要:
如果你要去一些大公司面试,事先做做这些公司的面试题很有必要,比如 google 或者微软的面试题。我给出一些网站资源供大家参考,也请大家补充。http://www.careercup.com/这个网站列出了很多公司的面试题,主要是计算机程序方面的http://zhedahht.blog.163.com/这个是何海涛的博客,列出了一些微软,google 算法方面的面试题以及解法。http://fayaa.com/tiku/view/ 阅读全文
摘要:
计数排序是3大非比较排序(计数、基数及桶排序)之一,其基本原理是利用额外的存储空间(计数数组)对每个元素进行计数并将之存储到新的数组中(牺牲空间换时间)。此处的关键是计数数组的下标是原数据的元素值,即利用原数据的关键之进行索引(类似于hash表的索引)。其时间复杂度为Θ(n+k),即Θ(n)。注意,此处的计数排序时稳定排序算法(这是为什么step3从后往前扫描的原因)。 主要有3个步骤: step1:记录待排序集合A中的每一个元素i具有的个数,存放到计数数组C[i]中 step2:在C的相应位置处确定不比该位置大的数据个数 step3:从大到小依次扫描原数据,将其存储到... 阅读全文