内外排序专题
纯纯的心儿
每天都在赚事业。。
展开
-
排序专题之插入排序
根据书本上的描述,插入排序主要学了两种,一个是直接插入排序,一个是shell 排序,shell排序是建立在直接插入排序的基础上的一个类似于优化的排序,在某些情况下可以减小时间的复杂度。还加上一个折半排序,有带二分的思想:直接插入排序::#includeusing namespace std;int main(){ int n; int s[原创 2015-08-08 09:28:47 · 340 阅读 · 0 评论 -
排序专题之选择排序
第二类的排序,选择排序,有两种,一种是直接选择排序,一种是堆排序,堆排序用到了树部分的知识,下面来看这2种排序。第一种为选择排序:基本思想: 第i趟排序开始时,当前有序区和无序区分别为R[0..i-1]和R[i..n-1](0≤i<n-1),该趟排序则是从当前无序区中选出关键字最小的记录R[k],将它与无序区的第1个记录R[i]交换,使R[0原创 2015-08-09 14:54:20 · 412 阅读 · 0 评论 -
排序专题之归并排序
归并排序:基本思想是将两个或两个以上有序表合并成一个新的有序表。假设初始序列含有n个记录,首先将这n个记录看成n个有序的子序列,每个子序列的长度为1,然后两两归并,得到?n/2?个长度为2(n为奇数时,最后一个序列的长度为1)的有序子序列;在此基础上,再进行两两归并,如此重复,直至得到一个长度为n的有序序列为止。这种方法被称作2-路归并排序。 下面请看代码实现:原创 2015-08-10 15:16:17 · 285 阅读 · 0 评论 -
排序专题之交换排序
在交换排序这一类中,分为冒泡排序和快速排序,快速排序是建立在冒泡排序基础上的一个优化,很有意义的一个排序,在各种acm竞赛以及其他领域中经常被用到;接下来,我们先看一看冒泡排序。冒泡排序基本思想:通过无序区中相邻记录关键字间的比较和位置的交换,使关键字最小的记录如气泡一般逐渐往上“漂浮”直至“水面”。整个算法是从最下面的记录开始,对每两个相邻的关键字进行比较,且使关原创 2015-08-09 16:20:31 · 482 阅读 · 0 评论 -
排序专题之分配排序
分配排序分两块,桶式排序和基数排序,基数排序是桶式排序的递进:下面来看下这两种排序:简单的说,桶式排序就是,先将序列的数字进行顺序计数,然后遍历计数每个数字的起点(数字相同的已经合并),然后从尾部向前扫描,得一个排序好的序列:具体代码如下:#includeusing namespace std;int main(){ int n; cin>原创 2015-08-11 18:04:25 · 659 阅读 · 0 评论 -
排序专题之索引排序
索引排序 和基数排序的 链式法有点相似,下面来看一下一种索引排序方法索引数组s[i]存放的是a[i]数组的原先应该在的数组位置,相当于 a[i]=a[s[i]];下列演示一个该内容的算法:从0---n-1开始遍历,如果索引值和当前位置不符合,就顺着索引链进行循环调整,直到找到等于当前下标值的索引位置为止。每一轮循环所涉及的记录都调整到位,其索引下标都改为所在位置原创 2015-08-12 14:50:38 · 1009 阅读 · 0 评论 -
排序专题之 各个内外排序算法的比较
1.稳定性比较 插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的 选择排序、希尔排序、快速排序、堆排序是不稳定的2.时间复杂性比较 插入排序、冒泡排序、选择排序的时间复杂性为O(n2) 其它非线形排序的时间复杂性为O(nlog2n) 线形排序的时间复杂性为O(n);3.辅助空间的比较 线形排序、二路归并排序的辅助空间为O(n),其它排序的辅助空间为原创 2015-08-12 14:59:52 · 1178 阅读 · 0 评论