简单排序(冒泡、选择、插入)总结
2016-09-17 14:24
295 查看
冒泡、选择、插入这三种算法都包括如下的两个步骤,这两步循环执行,直到全部数据有序为止(但是,每种算法具体实现的细节有所不同。)
1.比较两个数据项。
2.交换两个数据项,或复制其中一项。
几种简单排序之间的比较
一般情况几乎不太使用冒泡排序算法。它过于简单了,以至于可以毫不费力地写出来。然而当数据量很小的时候它会有些应用的价值。
选择排序虽然把交换次数降到了最低,但比较的次数仍然很大。当数据量很小,并且交换数据相对于比较数据更加耗时的情况下,可以应用选择排序。
在大多数情况下,假设当数据量比较小或基本上有序时,插入排序算法是三种简单排序算法中最好的选择。对于更大数据量的排序来说,快速排序通常是最快的方法,快速排序以后再介绍。
除了在速度方面比较排序算法外,还有一种对各种算法的衡量标准是算法需要的内存空间有多大。本章中的三种算法都可以“就地”完成排序,即除了初始的数组外几乎不需要其他内存空间。所有排序算法都需要一个额外的变量来暂时存储交换时的数据项。
小 结
· 本章提到的排序算法都假定了数组作为数据存储结构。
· 排序包括比较数组中数据项的关键字和移动相应的数据项(实际上,是数据项的引用),直到它们排好序为止。
· 本章所有算法的时间复杂度都是O(n2)。不过,某些情况下某个算法可以比其他算法快很多。
· 不变性是指在算法运行时保持不变的条件。
· 冒泡排序算法是效率最差的算法,但它最简单。
· 插入排序算法是本章介绍的O(n2)排序算法中应用最多的。
· 如果具有相同关键字的数据项,经过排序它们的顺序保持不变,这样的排序就是稳定的。
1.比较两个数据项。
2.交换两个数据项,或复制其中一项。
几种简单排序之间的比较
一般情况几乎不太使用冒泡排序算法。它过于简单了,以至于可以毫不费力地写出来。然而当数据量很小的时候它会有些应用的价值。
选择排序虽然把交换次数降到了最低,但比较的次数仍然很大。当数据量很小,并且交换数据相对于比较数据更加耗时的情况下,可以应用选择排序。
在大多数情况下,假设当数据量比较小或基本上有序时,插入排序算法是三种简单排序算法中最好的选择。对于更大数据量的排序来说,快速排序通常是最快的方法,快速排序以后再介绍。
除了在速度方面比较排序算法外,还有一种对各种算法的衡量标准是算法需要的内存空间有多大。本章中的三种算法都可以“就地”完成排序,即除了初始的数组外几乎不需要其他内存空间。所有排序算法都需要一个额外的变量来暂时存储交换时的数据项。
小 结
· 本章提到的排序算法都假定了数组作为数据存储结构。
· 排序包括比较数组中数据项的关键字和移动相应的数据项(实际上,是数据项的引用),直到它们排好序为止。
· 本章所有算法的时间复杂度都是O(n2)。不过,某些情况下某个算法可以比其他算法快很多。
· 不变性是指在算法运行时保持不变的条件。
· 冒泡排序算法是效率最差的算法,但它最简单。
· 插入排序算法是本章介绍的O(n2)排序算法中应用最多的。
· 如果具有相同关键字的数据项,经过排序它们的顺序保持不变,这样的排序就是稳定的。
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- 经典排序算法之冒泡排序(Bubble sort)代码
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法