扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:builder.com.cn 2007年4月4日
关键字:
接下来,我将向大家介绍第二种改善算法的主要方法:那就是根据你要进行排序的数据来构造一个算法,从而避免标准算法中可能降低性能的部分。现在我将告诉你这是什么意思:如果你有一个无序的数组,其中包括从1到n中所有的元素,并且这些元素不重复出现。
对这个数组进行排序的话有一个算法只需要O(n)的时间复杂度。稍等一下,在上一段中我不是说最好的排序算法的时间复杂度是nlogn吗?对,上一段中所说的仅仅是一般情况,在那种情况下你必须对元素的大小进行比较后才能排序。这里是如果你能把比较这部分去除掉,那么你的算法将会运行的更快。下面让我们来看一下这段桶排序算法:
bucket_sort(a) {
n = length(a)
sorted = array of size n
for (i = 0; i < n; i++) {
sorted[a[i]] = a[i]
}
return sorted
}
在这个算法中,利用每一个元素的值作为排序数组的下标,这样我们对数组搜索一次就能完成整个数组的排序了。这是一个简单的整数排序例子,但是如果你有1,000个记录,而这些记录中有从0到1000个连续的ID号的话,使用这种排序方法将使你的算法效率得到明显的提高。当然假如你不能使用值来作为索引的话,这种方法就不能很好的发挥它的作用,所以这种排序方法只适合对整数进行排序。
既然现在你已经浏览了这些基本算法,那么这时请再注意一下你的代码——你是否确定这些代码能达到你所希望的效率?假如你愿意把时间花费在改善你的代码上的话,也希望你的代码能像这里的某一个代码一样,试着也这样去做对你来说将是非常值得的;把一块代码分成一个更小的类,对于提高效率会有非常好的效果。
下次,在你直接跳入下一个项目议题之前,请你试试花一点点时间去想想前进的最好方式是什么!——这样你会非常感谢你自己在为后面的代码而花了那么一点点时间。
责任编辑:德东
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者