![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
文章平均质量分 61
fighting123678
这个作者很懒,什么都没留下…
展开
-
直接插入排序
一、思路:假设第一个数据已经排好序,然后放到假设已经排好序的第一个 然后从第二个元素开始,一直到最后一个元素i,重复执行第三步 将第i个待排序的元素设为哨兵,依次与从第i-1个元素开始,依次逆序进行比较大小。如果要求从大到小排序,则哨兵大于前面的元素则前移;如果要求从小到大排序,则哨兵小于前面的元素则前移二、图示(从小到大排序)三、代码(1)按照从小到大排序//按照从小...原创 2018-12-24 00:00:10 · 205 阅读 · 0 评论 -
插入排序
1、插入排序的概念插入排序(Insertion Sort)是一种简单有效的比较排序算法,属于原地排序。其核心思想是:在每次迭代过程中从输入序列中取出一个元素插入到一个有序序列中,形成新的有序序列。重复该过程,直到序列中所有元素都被取出。输入序列:就是要排序的一组元素现在我把它称为N。有序序列:输入序列的一部分,该部分是有序的(升序或降序)称为M。如何插入?: 从N中的未排序部分取出...原创 2018-12-23 23:59:39 · 143 阅读 · 0 评论 -
简单选择排序
https://www.cnblogs.com/jingmoxukong/p/4303289.html1、简单选择排序的基本思想(1)从待排序序列中,找到关键字最小的元素;(2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;(3)从余下的N - 1个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。如图所示,每趟排序中,将当前第i小的...原创 2018-12-23 23:59:24 · 123 阅读 · 0 评论 -
归并排序
1、归并排序的基本思想将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个长度为4的有序序列;如此反复进行下去,最后得到一个长度为n的有序序列。综上可知:归并排序其实要做两件事:(1)“分解”——将序列每次折半划分。(2)“合并”——将划分后的序列段两两合并后排序。我们...原创 2018-12-23 23:59:06 · 216 阅读 · 0 评论 -
数据结构 排序复习
1、默认冒泡:默认把最大的放到最后面选择:默认把最小的放到最前面插入:默认把最小的放到最前面归并:默认从小到大排序建堆:默认建大顶堆快排:不动的值反而变了,递归次数与初始数据的排列次序有关,与每次划分后得到的分区处理顺序无关简单选择排序它最大的特点是交换移动数据次数相当少,这样也就节约了相应的时间,无论最好最坏的情况,其比较次数都是一样多。第 i 次排序需要进行n-i ...原创 2018-12-23 23:51:48 · 262 阅读 · 0 评论 -
第十章-排序-归并排序与基数排序
一、判断题1、答案:F解析:注意是归并的躺数的数量级而不是归并排序的时间复杂度, 因此为logN二、单选题1、答案:A2、答案:B3、答案:C解析:https://blog.csdn.net/gzzheyi/article/details/80503504、答案:C解析:5、答案:B解析:冒泡排...原创 2018-12-23 23:56:56 · 326 阅读 · 0 评论 -
第十章排序--交换类排序与选择类排序
一、判断题1、答案:F解析:堆排序的空间复杂度是O(1),所以需要的额外空间就是O(1)2、答案:T3、答案:F4、答案:F解析:基本有序一般指的是基本都是升序,不是完全。所有基本有序次数不一定最多,完全有序次数才最多。二、单选题1、答案:C解析:如果左右指针都会停止移动,也就意味着停下来就交换,这种情况对应的时间复杂度为...原创 2018-12-23 23:57:02 · 386 阅读 · 0 评论 -
堆排序
1、堆排序的基本思想堆是一棵顺序存储的完全二叉树。其中每个结点的关键字都不大于其孩子结点的关键字,这样的堆称为小顶堆(结点小,孩子大)。其中每个结点的关键字都不小于其孩子结点的关键字,这样的堆称为大顶堆(结点大,孩子小)。举例来说,对于n个元素的序列{R0,R1, ... ,Rn}当且仅当满足下列关系之一时,称之为堆:结点为i时,其孩子为2*i+1和2*i+2(1) R...原创 2018-12-23 23:59:13 · 115 阅读 · 0 评论 -
冒泡排序
https://www.cnblogs.com/jingmoxukong/p/4302718.html1、冒泡排序的基本思想它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名。假设有一个大小为N的无序序...原创 2018-12-24 00:00:24 · 90 阅读 · 0 评论 -
快速排序
https://www.cnblogs.com/jingmoxukong/p/4302891.html1、快排的基本思想它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数。然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。详细的图解往往比大堆的文字更有说明力,所以直接上图:...原创 2018-12-24 00:00:17 · 123 阅读 · 0 评论 -
排序总结
排序种类 排序方式 基本思想 时间复杂度 比较次数 移动次数 空间复杂度(辅助存储) 平均时间复杂度 最好时间复杂度 最坏时间复杂度 插入排序 (直接)插入排序 从后面未排序部分挑最小的不断向前插 逆序进行比较大小 n−1—— 0— O(1) 折半插入排序 ...原创 2018-12-23 23:57:11 · 95 阅读 · 0 评论 -
冒泡排序、选择排序
简单的整数排序 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 8515 Solved: 4545 [Submit][Status][Web Board] Description对给出的若干整数按从小到大排序。 Input输入的第一个数为n(n<=1000),后接n个整数。 Output按从小到大的顺序输出这些整数,每两个...原创 2018-12-24 00:01:26 · 581 阅读 · 0 评论 -
希尔排序
一、思路设待排序元素序列有n个元素,首先取一个整数increment(小于n)作为间隔将全部元素分为increment个子序列,所有距离为increment的元素放在同一个子序列中,在每一个子序列中分别实行直接插入排序。 然后缩小间隔increment,重复上述子序列划分和排序工作。直到最后取increment=1,将所有元素放在同一个子序列中排序为止。二、实例(1)下面给出一个数据...原创 2018-12-23 23:59:57 · 218 阅读 · 0 评论 -
第十章 排序概念与插入排序
一、单选题1、答案:D解析:直接插入排序所以可能的移动和比较的次数是在最小和最大之间就可以了所以是从9—45,答案为D2、答案:D解析:二分插入排序的最大比较次数是:log2底n取整后 +13、答案:B解析:A:32比94小,比较一次,变成32,94;40比94小,比32大,比较两次,现在总共比较了三次,变成32,40,94;...原创 2018-12-23 23:57:18 · 328 阅读 · 0 评论 -
折半插入排序
折半插入排序算法是对直接插入排序算法的简单改进,主要将折半比较的思想引入插入排序,在一定程度上提高了直接插入排序的效率。一、思路(1)每次插入,都从前面的有序子表中查找出待插入元素应该被插入的位置;(2)给插入位置腾出空间,将待插入元素复制到表中的插入位置。二、代码从小到大int BinaryInsertSort(){ int i,j,low,high,mid; fo...原创 2018-12-24 00:00:03 · 164 阅读 · 0 评论 -
基数排序
1、基数排序的基本思想 如果对效率有所要求,而不太关心空间的使用时,我会选择用基数排序(当然还有一些其他的条件),或是一些计数排序的变形。 (1)两种多关键码排序方法 最高位优先法(MSD法)。先按k1排序,将序列分成若干子序列,每个子序列中的记录具有相同的k1值;再按k2排序,将每个子序列分成更小的子序列;然后,对后面的关键码继续同样的排序分成更小的子序列,直...原创 2018-12-23 23:59:49 · 199 阅读 · 0 评论