
排序
用swift语言编写,仅供参考
Style_月月
越努力,越幸运
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
swift算法之排序:(九)基数排序
1、概述基数排序属于分配式排序,又称 桶子法,他是透过键值的部分咨询,将要排序的元素分配至某些桶中,借以达到排序的作用。基数排序是属于稳定性的排序2、算法原理基本原理:利用桶来实现,然后按照基数入桶,基数的取值是从数字的低位到高位以此取值步骤:1)以无序序列数值的个数为基数,将无序序列的值进入到基数对应的桶中2)个位数为基数入桶完毕后,在安装编号从小到大将桶中的数据以此...原创 2019-06-03 14:24:32 · 453 阅读 · 0 评论 -
swift算法之排序:(八)桶排序
1、概述桶排序的工作原理是将数组分到有限数量的桶子里,每个桶子再个别排序 即有可能使用别的排序算法/以递归方式继续使用桶排序。2、算法原理思想:将数组分到有限数量的桶里,然后寻访序列,并且把项目一个一个放到对应的桶子去,对每个不是空的桶子进行排序,最终将所有的桶合并 1、建桶 2、分桶 3、小桶排序3、举例对[1,34,66,90,99,3...原创 2019-06-03 13:43:40 · 422 阅读 · 1 评论 -
swift算法之排序:(六)快速排序(冒泡算法的改进版)
1、概述快速排序是对冒泡算法的一种改进。快序排序的思想与归并排序类似,都是采用分而治之的方式进行排序,其基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过车过可以递归进行,直到整个数据有序。2、算法原理基本原理:取出无序数列中的第一个值,然后通过比较将比该值小的元素放到该值的...原创 2019-06-03 11:08:24 · 358 阅读 · 0 评论 -
swift算法之排序:(五)归并排序
1、概述归并排序是建立在归并操作上的一种有效的排序研发,该算法主要是采用分治法(divide and conquer)的思想。在归并排序中,需要将排序的数组进行拆分,将其拆分的足够小,当拆分的数组中只有一个元素时,则拆分的数组是有效的,然后将这些有序的数组进行两两合并,并在合并的过程中进行比较,合并生成的新数组仍然是有序的,然后再次将合并的有序数组进行合并,重复这个过程,直到整个数组都是有...原创 2019-06-03 09:57:49 · 711 阅读 · 2 评论 -
swift算法之排序:(四)堆排序
1、概述堆排序是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树,并同时满足堆积的性质:子节点的键值或索引总是大于/小于它的父结点。堆又分为 大顶堆 和小顶堆,大顶堆的特点是 该完全二叉树的根节点比其左右节点都要大,小顶堆的特点是 在小顶堆中根节点比左右子节点的值都要小。1)大顶堆假设根节点的编号是 i ,那么该根节点的左孩子的编号是 2i,右孩子的编号是 2i...原创 2019-05-31 17:10:06 · 607 阅读 · 0 评论 -
swift算法之排序:(七)希尔排序(插入排序的改进版)
1、概述希尔排序又称递减/缩小增量排序,是直接插入排序的一种更高效的改进版本。希尔排序是非稳定排序。希尔排序是把记录按一定下标的一定增量分组,对每组使用直接插入排序算法排序,随着增量的减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰巧被分成一组,算法便终止。2、算法原理思想:元素通过每次移动较大间隙,整个数组可以快速形成局部排序好的情况,这样会让接下来的交换变的...原创 2019-05-31 11:20:21 · 468 阅读 · 0 评论 -
swift算法之排序:(三)插入排序
1、概述插入排序是简单直观且稳定的排序算法。插入排序的基本操作是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数+1的有序数据,适用于少量数据的排序。插入排序主要是将排序数组分成两部分,第一部分是包含这个数组的左右元素,但最后一个元素除外(数组有多余的空间才可插入),第二部分是需要插入的元素,在第一部分排序完成后,再将这个待插入放入元素插入到已排好序的第一部分中。插入...原创 2019-05-31 10:18:57 · 544 阅读 · 0 评论 -
swift算法之排序:(二)选择排序
1、概述选择排序是一种简单直观的排序,其原理是每次从待排序的数据元素中选出最小/最大的一个元素,存放到序列的起始位置,然后再从剩余的元素中继续寻找最小/最大元素,放到已排序元素的末尾,以此类推,知道全部待排序元素排序完成。选择排序是不稳定排序2、算法原理思想:通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录做交换步骤: 1、在未...原创 2019-05-30 18:10:29 · 384 阅读 · 0 评论 -
swift算法之排序:(零)排序算法总结
1、排序算法总结2、排序算法的时间复杂度比较常用的时间复杂度大小为O(1) < O(logn) < O(n) < O(nlogn) < O(n^2)< O(n^3)< O(2^n)< O(n!)< O(n^n)3、稳定性算法什么是稳定性?答:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若...原创 2019-05-30 10:57:32 · 328 阅读 · 0 评论 -
swift算法之排序:(一)冒泡排序
1、概述冒泡排序是一种简单的算法,是指重复遍历需要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母a~z等)错误就把他们交换过来,遍历的目的是重复的进行指导没有相邻元素需要交换 即该元素列已经排序完成。2、算法原理1)比较相邻的元素,如果第一个比第二个大,就交换他们两个2)对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,在这一点,最后的元素会...原创 2019-05-29 17:05:56 · 2059 阅读 · 2 评论