史上最全排序算法总结 | 原力计划

史上最全排序算法总结 | 原力方案

作者 | 铁猴

责编 | 屠敏

出品 | CSDN 博客

简介

本文对稀有排序算法举行总结。

排序算法

冒泡排序

该算法比力简便,几乎一切言语触及到算法时,都市触及到冒泡算法。

算法思绪:

  1. 比力相邻的元素。假如第一个比第二个大,就互换他们两个。

  2. 对每一对相邻元素做相反的事情,从开头第一对到开头的最初一对。在这一点,最初的元素应该会是最大的数。

  3. 针对一切的元素反复以上的步调,除了最初一个。

    持续每次对越来越少的元素反复外表的步调,直到没有任何一对数字必要比力。

选择排序

每次选择一个最大(小)的,直到一切元素都被输入。

可参考:
https://blog.csdn.net/sun7545526/article/details/85165618

直接插进排序

插进排序的基本办法是:每一步将一个待排序的元素,按其排序码的轻重,插进到前方以前排好序的一组元素的得当地点上去,直到元素全部插进为止

算法思绪:

插进第i(i >= 1)时,前方的V[0],V[1],……,V[i-1]以前排好序。这时,用V[I]的排序码与V[i-1],V[i-2],…的排序码排序举行比力,找到插进地点即将V[i]插进,原本地点上的元素向后顺移。

以[21,25,49,25,16,08]为例,排序历程如下所示:

在小范围数据集或是基本有序时,该算法听从较高。

希尔排序

先对数据举行预处理,使其基本有序,然后再用直接插进排序算法排序。

具体历程可参考:
https://blog.csdn.net/eric_sunah/article/details/103080
731

快速排序

使用“分而治之”的头脑对聚集举行排序

可参考:
https://blog.csdn.net/sun7545526/article/details/85165742

堆排序

说堆排序前,先说下啥是堆。

堆:堆是满意下列实质的完全二叉树:

  • 每个节点都大于或是即是其支配孩子节点的值,称为大顶堆

  • 每个节点都小于或是即是其支配孩子节点的值,称为小顶堆

接下去说下堆是怎样做排序的,思绪如下(以大顶堆为例):

  1. 根节点是整个堆的最大值,将它移走。

  2. 将剩余n-1个节点重新布局成一个堆,再将根节点移走

  3. 反复实行1,2。直到没有节点可挪动,就天生了有序序列。

该算法有两个必要处理成绩:

  1. 怎样将一个无序序列构建一个堆。

  2. 移除根节点后,怎样用剩余的节点重修堆。

具体先容参见:
https://blog.csdn.net/eric_sunah/article/details/10308
1878

归并排序

归并排序(MERGE-SORT)是使用归并的头脑完成的排序办法,该算法接纳经典的分治(divide-and-conquer)战略(分治法将成绩分(divide)成一些小的成绩然后递归求解,而治(conquer)的阶段则将分的阶段取得的各答案”修补”在一同,即分而治之)。

具体先容参见:
https://blog.csdn.net/eric_sunah/article/details/103082607

总结

分类总结:

时间繁复度总结:

版权声明:本文为CSDN博主「铁猴」到场原力方案的原创文章。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片