内排序与外排序+内排时间复杂度等性能总结
来源:互联网 发布:107火箭炮 知乎 编辑:程序博客网 时间:2024/05/18 18:17
【出处】学了这么久,今天才知道内排和外排,总结一下http://book.51cto.com/art/201108/287033.htm
内排序与外排序
根据在排序过程中待排序的记录是否全部被放置在内存中,排序分为:内排序和外排序。
内排序是在排序整个过程中,待排序的所有记录全部被放置在内存中。外排序是由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要在内外存之间多次交换数据才能进行。我们这里主要就介绍内排序的多种方法。
对于内排序来说,排序算法的性能主要是受3个方面影响:
1.时间性能
排序是数据处理中经常执行的一种操作,往往属于系统的核心部分,因此排序算法的时间开销是衡量其好坏的最重要的标志。在内排序中,主要进行两种操作:比较和移动。比较指关键字之间的比较,这是要做排序最起码的操作。移动指记录从一个位置移动到另一个位置,事实上,移动可以通过改为记录的存储方式来予以避免(这个我们在讲解具体的算法时再谈)。总之,高效率的内排序算法应该是具有尽可能少的关键字比较次数和尽可能少的记录移动次数。
2.辅助空间
评价排序算法的另一个主要标准是执行算法所需要的辅助存储空间。辅助存储空间是除了存放待排序所占用的存储空间之外,执行算法所需要的其他存储空间。
3.算法的复杂性
注意这里指的是算法本身的复杂度,而不是指算法的时间复杂度。显然算法过于复杂也会影响排序的性能。
根据排序过程中借助的主要操作,我们把内排序分为:插入排序、交换排序、选择排序和归并排序。可以说,这些都是比较成熟的排序技术,已经被广泛地应用于许许多多的程序语言或数据库当中,甚至它们都已经封装了关于排序算法的实现代码。因此,我们学习这些排序算法的目的更多并不是为了去在现实中编程排序算法,而是通过学习来提高我们编写算法的能力,以便于去解决更多复杂和灵活的应用性问题。
本章一共要讲解七种排序的算法,按照算法的复杂度分为两大类,冒泡排序、简单选择排序和直接插入排序属于简单算法,而希尔排序、堆排序、归并排序、快速排序属于改进算法。后面我们将依次讲解。
各类内排序的时间复杂度,空间复杂度,稳定性等http://blog.csdn.net/hguisu/article/details/7776068
- 内排序与外排序+内排时间复杂度等性能总结
- 内排序与外排序
- 算法稳定排序和非稳定排序、内排序和外排序、时间复杂度和空间复杂度
- 内排序与外排序的关系
- 内排序和外排序
- 内排序和外排序
- 内排序和外排序的理解
- 内排序算法的时间复杂度比较
- 论数据结构中的内排序和外排序
- 排序与时间复杂度
- 内排序方法总结
- 算法导论学习之快排+各种排序算法时间复杂度总结
- 排序总结-时间复杂度和空间复杂度
- FOR ALL ENTRIES IN内表排序、排重对性能的影响
- FOR ALL ENTRIES IN内表排序、排重对性能的影响
- 排序算法时间复杂度总结
- 内排序的性能比较
- 排序算法总结【内排序】
- UGUI(十)美术字库
- 文章摘要
- 一切成功源于积累——20150824 黑色星期一 欧美3500点暴涨 美日5500点暴跌 全球股市暴跌
- hdu 2048 神、上帝以及老天爷 错排应用
- ViewPager实现引导页
- 内排序与外排序+内排时间复杂度等性能总结
- 主库磁盘满,从库io线程报错Got fatal error 1236 from master when reading data from binary log
- 线程执行顺序例子
- 数据挖掘与机器学习的十大算法
- Java总结
- javascript表单验证之普通验证
- 《C#入门经典(第6版)》读书笔记2_第二章:编写C#程序
- UVa 1615:Highway(贪心)
- HDU 3874 Necklace(树状数组的离线操作)