基本排序(五):基本排序算法的总结
2015-03-13 14:19
211 查看
基本排序的基础
如果一个基本的排序算法不比数据处理,如数据读入和读出慢,就没有必要寻找一个更快的算法。如果被排序的文件适合放在内存中,则排序方法称为“内部排序”;从磁盘上对文件排序称为“外部排序”。区别是内部排序可以很容易的访问任何元素,但是外部排序必须顺序访问元素,至少在大的数据块是如此。
排序程序访问元素的方式:通过关键字进行比较、直接访问整个元素移动;
排序函数都包过3个参数:数组、带排序字数组的左边界和右边界
void(Item a[], int l, int r);
排序算法的运行时间:对N个元素排序时
选择排序、插入排序、冒泡排序与N2N^2成正比;
希尔排序(插入排序的改进)与 N(3/2) 成正比;
关键字-索引排序与 N 成正比;
如何减小开销,加快排序速度:(重要)
改用一种更高效的算法
缩短内部循环
检查是否有可以跳过的比较或者交换操作
排序的稳定性
当待排序记录的关键字均不相同时,排序结果是惟一的,否则排序结果不唯一。
在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生变化,则称这种排序方法是不稳定的。
注意:
排序算法的稳定性是针对所有输入实例而言的。即在所有可能的输入实例中,只要有一个实例使得算法不满足稳定性要求,则该排序算法就是不稳定的
基本排序算法种类
1. 选择排序
选出数组中最小的元素,将它与数组中第一个元素交换,然后找出次小的元素,并将它与数组中第二个元素交换。。。直至整个数组排序完成。即通过不断选出剩余数组中最小的元素实现。2. 插入排序和希尔排序
通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置插入。因而在从后向前扫描过程中,需要反复把已排序元素逐步向后移位,为最新元素提供插入空间。3. 冒泡排序
遍历文件,如果紧邻的2个元素大小顺序不对,就将两者交换,重复操作直至排序完成4. 索引和指针排序、链表排序、关键字排序
索引和指针排序、链表排序:间接排序,灵活性强,不会更改原始数据和关键字信息。相关文章推荐
- 基本排序(五):基本排序算法的总结
- 对Java中四种基本排序的总结
- JAVA四种基本排序的总结
- JAVA四种基本排序的总结
- C语言实现基本排序算法----排序(直接插入排序,SHELL排序,冒泡排序,快速排序,简单选择排序,堆排序)
- 排序1+5:各种排序算法的总结和比较
- JAVA四种基本排序总结
- 【排序算法】快速排序超级总结
- 基本排序算法及分析(二):冒泡排序
- 基本排序算法及分析(一):插入排序,直接选择排序
- 对Java中四种基本排序的总结
- JAVA四种基本排序的总结
- JAVA四种基本排序的总结
- JAVA四种基本排序的总结(转)
- 基本排序算法及分析(四):快速排序
- JAVA四种基本排序的总结
- JAVA四种基本排序的总结
- JAVA四种基本排序的总结
- 常用算法总结之排序(二)----基本冒泡
- java基本算法总结(冒泡排序、选择排序、插入排序)