排序算法
五个常用排序算法
LostDog。
三流程序员,音乐爱好者。
展开
-
排序算法(七)————堆排序
堆排序是一种利用二叉堆的性质来进行排序的算法,二叉堆本身可以使用一个数组来表示,若我们有一个无序数组,我们可以先将其通过一系列方法变成一个二叉堆,然后再进行出堆操作,实际上就是将其目前最大值或最小值输出,这样我们的输出顺序其实就是按照从小到大或者从大到小一个顺序,也就间接完成了我们的排序工作。首先,二叉堆是什么呢?第一,二叉堆首先是一颗完全二叉树,也就是一颗除了最底层其他层节点全部都是满的且最...原创 2020-03-15 20:50:14 · 119 阅读 · 0 评论 -
排序算法(六)————希尔排序
希尔排序是对直接插入排序的一种改进,我们都知道直接插入排序在元素次序规则,数量较少时效率是最高的,而希尔排序恰巧合理的利用了这两点,对冒泡排序进行了改进,希尔排序的核心在于分组,什么是分组呢:如下有10个元素:12,15,8,66,24,55,34,99,3,10我们假如要对其进行希尔排序,我们第一步要做的就是对其进行分组,那么分组依据是什么呢?我们最常用的分组依据是lenth/2得到步长...原创 2020-03-11 21:00:08 · 148 阅读 · 0 评论 -
排序算法(五)————快速排序
快速排序是一种效率很高的排序算法,也是我们使用最多的一种排序算法。快速排序原理:两个指针分别指向数组两头元素,将数组第一个元素保存下来,作为基准数,两个指针开始向中间移动,先移动数组尾部指针,直到发现所指元素比基准数小时,将这时候所指向的数赋值给数组头部指针指向的位置,然后尾部指针停止移动,头部指针开始移动,直到移动到所指向的元素比基准元素大时,将此时所指向的元素赋值给尾部指针所指向的位置,头...原创 2020-03-08 14:44:44 · 203 阅读 · 0 评论 -
排序算法(四)————归并排序
归并排序原理:是将两个有序数列再次进行排序后插入到数列中,使其形成一个有序的数列的过程,当然,假如要有两个有序数列本身条件就是很困难的,所以采用了分治法将数列进行不断切分,到最后每个小数列只存在一个元素,便可看作是有序,利用递归来求得最后的有序数列,其代码难度比别的几个排序大一些,在这里讲解大家可能无法理解,所以附上一些很不错的视频,大家可以去看看,视频讲的很清晰,很好理解。视频链接:点击这里...原创 2020-03-07 23:04:24 · 109 阅读 · 0 评论 -
排序算法(三)————选择排序
选择排序原理与实现:从一组数中挑选最大一个放到尾部,除去最后一个以外的数据再次选择最大的放到尾部,以此类推。例:有以下几个数:3 7 4 2 6 1,请使用选择排序将他们从小到大排列解:第一趟:3 7 4 2 6 1在其中找到最大的元素7,然后将其和最后一个元素交换位置:3 1 4 2 6 7第二趟:3 1 4 2 6 7除了已经排好的7,在其中找到最大的元素6,然后将其和最...原创 2020-03-07 14:48:31 · 269 阅读 · 0 评论 -
排序算法(二)————插入排序
**实现过程与原理:**对于给定的几个数,先将第一个数看做有序序列,然后将第二个数插入到有序序列中,使整个序列再次有序化,再将第三个数插入到前面的有序序列中,如此往复,即为插入排序原理。例:现有给定几个数:21 39 18 16,请使用插入排序将它们从小到大排序解:21 39 18 16 现将21看作是有序序列,我们将39插入并排序第一趟:将39插入39大于21 故排序后:21 ...原创 2020-03-07 14:01:13 · 254 阅读 · 0 评论 -
排序算法(一)————冒泡排序
冒泡排序是排序算法中用法简单,使用最广泛的一种算法,废话不多说,下面是其的逻辑与C语言实现:案例:现在有五个数:12 34 23 88 67,请使用冒泡排序将其按照从小到大排序,并求其时间复杂度。解:第一趟排序:12 34 23 88 67(开始时)12 34 23 88 67第一次:12和34比较,34比12大,由于要从小到大,所以不需要换位12 23 34 88 67第二次:...原创 2020-03-04 23:52:58 · 672 阅读 · 0 评论