2011年4月13日

常见算法面试题的常见解法-1 Counting Sort

摘要: 算法面试题中经常出现的一种题目就是 查找 或者是排序. 个人感觉有80%的题目都和查找排序有关大部分常用的排序算法时间复杂度都是O(nLogn)这个只能说是通用解,一般解对于算法面试题中往往要求很低的时间复杂度,例如下面这个题目已知一个数组长为m 中间存放的都是整数 其值范围为1-m ,中间的元素有可能重复 也有可能不重复如何在O(M)的情况下查到 (1-m)的数中 哪些数重复了,哪些数没有出现counting sort 的本质是 新建一个长度为M的数组An 每一个数组下标代表一个数,数组中的值代表这个元素出现的次数 (初始值都为0)那么, 遍历一次m 遇到一个数 就在对应的下标上加1那么最终 阅读全文

posted @ 2011-04-13 16:28 听说读写 阅读(2330) 评论(1) 推荐(0) 编辑

算法基础 几个常见的比较排序

摘要: 排序算法 时间复杂度 最差时间复杂度冒泡 O(n*n)插入 O(n*n)选择 O(n*n)归并O(nLogn)堆 O(nLogn)快速O(nLogn) O(n*n) 一般来说 最常用的排序是快速排序 ,实现简单 效率快, 对比对排序和归并排序, 快速排序的系数比较小,所以都是NlogN的时候会比较快PS: 在数据量比较小的时候最好别用归并排序...不过数据量小的时候这个时间无所谓啦在大数据量或者特殊情况或者特别优化的情况下 还是有算法比快速排序快的 只是比较少遇到PS2:已经有很多证明,比较排序的时间复杂度不可能低于nLogn最近难得有空重新拿起算法导论看一遍..blog这里就当作笔记吧... 阅读全文

posted @ 2011-04-13 16:08 听说读写 阅读(408) 评论(0) 推荐(0) 编辑

导航