![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
文章平均质量分 55
用户名不以数字开头
这个作者很懒,什么都没留下…
展开
-
冒泡排序(Bubble Sort)
theory每一轮循环都会比较一个数和他相邻的数(每次两两比较),然后根据大小交换与否,后面的数变得有序需要n-1轮循环实际上当某一轮循环没有进行任何操作的时候就说明有序了,可以跳出循环了,但是需要增加标志位(flag),所以我还是直接循环下去吧,每一次标志位的判断和赋值也同样增加了基础操作直接上图就很简洁明了了图片来自于文章 https://www.cnblogs.com/chengxiao/p/6103002.htmlcode/* * @Author: 鱼香肉丝没有鱼 * @原创 2021-11-13 16:25:57 · 655 阅读 · 0 评论 -
选择排序(Selection sort)
theory基本思想:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。图片来源每一次迭代就能使得一个位置变得有序选择排序的时间复杂度是 O(n2)选择排序是不稳定的排序 选择排序的不稳定例子很简单。 比如 A 80 B 80 C 70 这三个卷子从小到大排序 第一步会把C和A做交换 变成C B A 第二步和第三步原创 2021-11-13 10:03:40 · 802 阅读 · 0 评论 -
桶排序 (Bucket Sort)
description其实和计数排序很像,也很简单,直接上代码就是简化了计数排序中的重用分布,直接输出fre[]中的信息code/****************************************** * @Author : 鱼香肉丝没有鱼 * @Date : 2021-09-20 12:55:54 * @LastEditors : 鱼香肉丝没有鱼 * @LastEditTime : 2021-11-24 01:29:41 *********原创 2021-11-24 13:56:19 · 768 阅读 · 0 评论 -
计数排序 (Counting Sort)
讲解来源:[https://byvoid.com/zhs/blog/sort-radix/](https://byvoid.com/zhs/blog/sort-radix/)note:非基于比较的排序,如计数排序,桶排序,和在此基础上的基数排序,可以突破O(NlogN)时间下限。但要注意的是,非基于比较的排序算法的使用都是有条件限制的,例如元素的大小限制,相反,基于比较的排序则没有这种限制(在一定范围内)。但并非因为有条件限制就会使非基于比较的排序算法变得无用,对于特定场合有着特殊的性质数据,非基于.原创 2021-11-24 13:23:02 · 543 阅读 · 0 评论 -
基数排序(Radix Sort)
原帖链接:https://www.cnblogs.com/skywang12345/p/3603669.htmldescription将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。以十进制为例示意图:在上图中,首先将所有待比较树脂统一为统一位数长度,接着从最低位开始,依次进行排序。按照个位数进行排序。按照十位数进行排序。按照百位数进行排序。排序后,数列就变成了一个.转载 2021-11-24 12:39:14 · 96 阅读 · 0 评论 -
插入排序(Insertion Sort)
theory原理讲解来源于文章 https://www.runoob.com/data-structures/insertion-sort.html1、概念及其介绍插入排序(InsertionSort),一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增 1 的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找原创 2021-11-13 16:42:48 · 10081 阅读 · 1 评论 -
希尔排序(Shell‘s Sort)
description利用直接插入排序的特点:如果待排序的序列基本有序时或者元素数量较少时,效率大大提高,希尔排序对序列进行“宏观”调整,先实现基本有序,然后再微观达到完全有序基本思想先取一个正整数 d1<n, 把所有相隔 d1 的记录放一组, 组内进行直接插入排序;取 d2<d1, 重复上述分组和排序操作; 直至 di=1, 即所有记录放入一个组中进行排序为止动画过程,来源于我的数据结构课程老师(刘庆晖老师)的课件code/******************原创 2021-11-23 19:35:48 · 218 阅读 · 0 评论 -
堆排序(Heap Sort)
description堆分为小根堆和大根堆,我们用一维数组来存储这个堆(第0号不用),他的上下两层编号之间存在两倍关系,之前也做过类似的题13. 郭老师爱合并果子。code我们以非降序为例把数组中的数据存入小根堆,然后利用小根堆自动维护堆特性的原理实现排序代码如下://小根堆是一种特殊形式的完全二叉树,可以使用数组来存储//注意其中很巧妙的下标2倍关系//从1开始存,0号元素不使用,可以很好的利用上下标的2倍关系#include <stdio.h>#include <原创 2021-11-18 20:28:30 · 692 阅读 · 0 评论 -
归并排序(Merge Sort)
theory原理讲解和部分代码来自于https://www.runoob.com/w3cnote/merge-sort.html基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。分而治之 可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采原创 2021-11-14 15:45:40 · 1018 阅读 · 0 评论 -
快速排序(Quick sort)
1.基本原理找一个基准点,每次把小于这个基准点的放在一边(根据是要降序还是升序来定),大于这个基准点的放在另一边来处理。对分出来的两个部分再次递归使用这个函数,直到每个部分只剩下一个数2. 代码实现这里做的是升序排序,把第一个数字作为基准点(单独拿出来),从另一边也就是末尾开始运行,如果小于基准点的话直接把值赋给刚才访问的元素(这里第一步就是头,也刚好是基准点),这样交替达到调换值得效果cpp代码// Quick_Sort.cpp : Defines the entry point for原创 2021-10-19 22:11:52 · 54 阅读 · 0 评论