知识大全 交换排序之堆排序
Posted 序列
篇首语:敢说敢作敢为, 无怨无恨无悔。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 交换排序之堆排序相关的知识,希望对你有一定的参考价值。
堆排序 堆的定义 n个元素的序列k k … kn)当且仅当满足以下关系时 称之为堆 若将和序列k k … kn)对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树 则堆的含义表明 完全二叉树中所有非终端结点的值均不大于(或不小于)其左 右孩子结点的值 由此 若序列k k … kn)是堆 则堆顶元素(或完全二叉树的根)必为序列中n个元素的最小值(或最大值) 这两种堆分别称之为小根堆和大根堆 堆排序(Heap Sort) 对一组待排序的关键字 首先是把它们按堆的定义排列成一个序列(称为初建堆) 这就找到了最大关键字 然后将最大的关键字取出 用剩下的关键字再重建堆 便得到次大关键字 如此反复进行 直到把全部关键字排好序为止 堆排序算法 堆排序的平均时间复杂度接近于O(nlgn) 堆排序是一种不稳定的排序方法 cha138/Article/program/sjjg/201311/23797相关参考
快速排序(QuickSort) 算法思想 快速排序是CRAHoare于年提出的一种划分交换排序它采用了一种分治的策略通常称其为分治法(Divideand ConquerMethod) ()
交换排序的基本思想两两比较待排序记录的关键字发现两个记录的次序相反时即进行交换直到没有反序的记录为止 冒泡排序 冒泡排序将当前未排序的记录自上而下依次对相邻的两个记录进行比较若为逆序则
快速排序执行过程 快速排序执行的全过程可用递归树来描述 > > 分析 ()递归执行的路线如图中带箭头的包络线所示 ()递归树上每一结点左旁方括号表示当前待排序的区间结点内的关键字是划分
算法分析 ()算法的最好时间复杂度 若文件的初始状态是正序的一趟扫描即可完成排序所需的关键字比较次数C和记录移动次数M均达到最小值 Cmin=n Mmin= 冒泡排序最好的时间复杂度为O
选择排序(SelectionSort)的基本思想是每一趟从待排序的记录中选出关键字最小的记录顺序放在已排好序的子文件的最后直到全部记录排序完毕 直接选择排序 直接选择排序(Straig
划分算法Partition ()简单的划分方法 ①具体做法 第一步(初始化)设置两个指针i和j它们的初值分别为区间的下界和上界即i=lowi=high;选取无序区的第一个记录 R[i](即
算法分析 快速排序的时间主要耗费在划分操作上对长度为k的区间进行划分共需k次关键字的比较 ()最坏时间复杂度 最坏情况是每次划分选取的基准都是当前无序区中关键字最小(或最大)的记录划分的结果
快速排序 快速排序(QuickSort)通过一趟排序将待排记录分割成独立的两部分其中一部分记录的关键字均比另一部分记录的关键字小则可分别对这两部分记录继续进行排序以达到整个序列有序快速排序三个步骤
排序是组织数据最基本的运算排序的方法也很多本章给出了几种典型的排序方法见下表 排序类别插入排序交换排序选择排序归并排序分配排序 排序方法直接插入冒泡法直接选择*归并排序箱排序 希尔排序*快速
经过排序后这些具有相同关键字的记录之间的相对次序保持不变则称这种排序方法是稳定的否则排序算法是不稳定的 排序过程中不涉及数据的内外存交换则称之为内部排序(内排序)反之若存在数据的内外存交换则称之