算法和数据结构——交换排序(冒泡和快速)
2013-01-28 17:12
204 查看
交换——根据序列中的两个元素的关键字的比较结果来对换这两个记录在序列中的位置。
冒泡排序的基本要点:
需要多趟循环操作;
一趟冒泡:每一趟排序从前向后(或从后向前)两两比较相邻元素的值,若为逆序,则交换之;
一趟之后:最大(或最小)的元素交换到序列的最终位置;
一趟之后:前一趟已经确定的元素不再参与比较;
最多n-1趟冒泡就可以把所有元素排好序;
空间效率:空间复杂度为O(1);
时间效率:
稳定性:
快速排序算法是对冒泡排序算法的一种改进。快速排序的基本要点:
基于分治法,需要多趟循环操作;
任取一个元素作为基准——pivot;
一趟排序——将排序表划分为独立的两部分:一部分的所有元素小于pivot,另一部分的所有怨毒大于pivot,则pivot放在最终的位置上;
递归的对两个字表重复上述过程,直到每部分内只有一个元素或空为止,即所有元素都放到了最终的位置上;
算法的关键在于划分操作,算法的性能也取决于划分操作的好坏;
冒泡排序的基本要点:
需要多趟循环操作;
一趟冒泡:每一趟排序从前向后(或从后向前)两两比较相邻元素的值,若为逆序,则交换之;
一趟之后:最大(或最小)的元素交换到序列的最终位置;
一趟之后:前一趟已经确定的元素不再参与比较;
最多n-1趟冒泡就可以把所有元素排好序;
空间效率:空间复杂度为O(1);
时间效率:
稳定性:
快速排序算法是对冒泡排序算法的一种改进。快速排序的基本要点:
基于分治法,需要多趟循环操作;
任取一个元素作为基准——pivot;
一趟排序——将排序表划分为独立的两部分:一部分的所有元素小于pivot,另一部分的所有怨毒大于pivot,则pivot放在最终的位置上;
递归的对两个字表重复上述过程,直到每部分内只有一个元素或空为止,即所有元素都放到了最终的位置上;
算法的关键在于划分操作,算法的性能也取决于划分操作的好坏;
相关文章推荐
- 【算法与数据结构必备】PHP常用排序算法:冒泡,快速排序,插入排序(一维数组)
- 数据结构和算法——排序算法(冒泡法 选择法 插入法 快速法)实现
- 算法与数据结构——快速排序 Quick Sort
- 关于排序(冒泡、选择、插入、快速)的几种算法
- Java冒泡,快速,插入,选择排序^_^+二分算法查找
- 数据结构各种排序法及核心思想(冒泡、鸡尾酒、选择、插入、二分法、希尔、堆、归并、快速)
- 算法之冒泡、快速排序
- (笔记)如何快速攻破传统算法和数据结构
- 数据结构与算法3——简单排序(冒泡、选择、插入排序)
- JAVA常用算法之冒泡、选择、快速
- 快速排序的优化 - 数据结构和算法97
- 浅谈数据结构-交换排序(冒泡、快速)
- 数据结构(C#)--冒泡、插入、快速、堆、归并、希尔、选择各种排序排序过程比较以及各种排序的所用时间的对比
- (数据结构排序的实验四)快速,冒泡,简单选择,直接插入排序的c语言实现!!
- 基本排序(一)交换排序(冒泡、快速)
- 数据结构--冒泡、快速排序
- 挖掘算法中的数据结构(一):O(n^2)排序算法之 选择、插入、冒泡、希尔排序 及 优化
- 算法积累_java_插入,选择,冒泡,快速排序
- 算法--排序(冒泡,选择,插入,快速)
- Java 常用算法 插入,冒泡,快速排序大放送