![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Sorting Algorithms
文章平均质量分 78
排序算法集合
独在黑夜丶看湖面
好记性不如烂笔头
展开
-
排序算法Overview
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:各类排序的概括:关于时间复杂度平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序;O(n1+§)) 排序,§ 是介于 0 和 1 之间的常数转载 2022-06-16 20:57:10 · 75 阅读 · 0 评论 -
选择排序(Selection sort algorithm)
文章参考:https://www.runoob.com/w3cnote/selection-sort.htmlhttps://zhuanlan.zhihu.com/p/29889599B站视频:六分钟搞定选择排序选择排序图解+代码选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。选择排序(Selection sort)是一种简单直观的排序算法。其基本思想是:首先在未排序的数列中找到最小(or转载 2022-06-16 21:56:48 · 251 阅读 · 0 评论 -
冒泡排序(Bubble sort algorithm)
文章参考:https://www.runoob.com/w3cnote/bubble-sort.htmlhttps://blog.csdn.net/guoweimelon/article/details/50902597B站视频:冒泡排序详解视频冒泡排序的基本思想就是:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。算法的核心在于每次通过两两比较交换位置,选出剩余无序序列里最转载 2022-06-16 21:22:52 · 203 阅读 · 0 评论 -
插入排序(Insertion sort algorithm)
文章参考:https://www.geeksforgeeks.org/insertion-sort/1. 算法描述Insertion sort is a simple sorting algorithm that works similar to the way you sort playing cards in your hands. The array is virtually split into a sorted and an unsorted part. Values from the uns转载 2021-10-07 21:25:59 · 630 阅读 · 0 评论 -
归并排序(Merge sort algorithm)
文章参考:https://www.cnblogs.com/chengxiao/p/6194356.htmlB站视频:归并排序【图解+代码】归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。分而治之可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去转载 2022-06-25 13:51:39 · 171 阅读 · 0 评论 -
快速排序(Quicksort algorithm)
文章参考:https://www.runoob.com/w3cnote/quick-sort.htmlhttps://zhuanlan.zhihu.com/p/63202860B站视频:快速排序快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。1.在待排序的元素任取一个元素作为基准(转载 2022-06-18 15:16:27 · 146 阅读 · 0 评论 -
计数排序(Counting sort algorithm)
文章参考:https://blog.csdn.net/thinkwon/article/details/101544159B站视频:计数排序【图解+代码】计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。它只能对整数进行排序。转载 2022-06-25 11:48:06 · 199 阅读 · 0 评论 -
希尔排序(Shell sort algorithm)
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序。选择一个增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;按增量序列个数 k,对序列进行 k 趟排序;每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表转载 2022-06-18 21:35:54 · 336 阅读 · 0 评论 -
堆排序(Heap sort algorithm)
文章参考:https://www.cnblogs.com/chengxiao/p/6129630.htmlB站视频:堆排序1_通俗易懂堆排序2堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结转载 2022-06-24 22:42:21 · 130 阅读 · 0 评论