排序 - 桶排序(Bucket Sort)详解
排序 - 桶排序(Bucket Sort)详解 1. 桶排序介绍 桶排序(Bucket Sort) 又称箱排序,是一种比较常用的排序算法。其算法原理是将数组分到有限数量的桶里,再对每个桶分别排好序(可以是递归使用桶排序,也可以是使用其他排序算法将每个桶分别排好序),最后一次将每个桶中排好序的数输出。 2. 桶排序算法 桶排序的思想就是把待排序的数尽量均匀地放

2021年3月26日
大约 5 分钟
排序 - 计数排序(Counting Sort)详解
排序 - 计数排序(Counting Sort)详解 计数排序介绍 计数排序不是一个比较排序算法,该算法于1954年由Harold H. Seward提出,通过计数将时间复杂度降到了O(N)。 计数排序基础版 基础版算法步骤 第1步:找出原数组中元素值最大的,记为max。; 第2步:创建一个新数组count,其长度是max加1,其元素默认值都为0。; 第

2021年3月26日
大约 9 分钟
排序 - 堆排序(Heap Sort)详解
排序 - 堆排序(Heap Sort)详解 堆排序介绍 堆排序(Heap Sort) 是指利用堆这种数据结构所设计的一种排序算法。堆分为"最大堆"和"最小堆"。最大堆通常被用来进行"升序"排序,而最小堆通常被用来进行"降序"排序。鉴于最大堆和最小堆是对称关系,理解其中一种即可。本文将对最大堆实现的升序排序进行详细说明。 最大堆进行升序排序的基本思想: 1.

2021年3月26日
大约 16 分钟
排序 - 插入排序(Insertion Sort)详解
排序 - 插入排序(Insertion Sort)详解 插入排序介绍 插入排序(Insertion Sort),一般也被称为直接插入排序(Straight Insertion Sort)。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外

2021年3月26日
大约 5 分钟
排序 - 归并排序(Merge Sort)详解
排序 - 归并排序(Merge Sort)详解 归并排序介绍 将两个的有序数列合并成一个有序数列,我们称之为"归并"。 归并排序(Merge Sort) 是利用归并思想对数列进行排序。根据具体的实现,归并排序包括"从上往下"和"从下往上"2种方式。 从下往上的归并排序 将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序

2021年3月26日
大约 12 分钟
排序 - 基数排序(Radix Sort)详解
排序 - 基数排序(Radix Sort)详解 基数排序介绍 基数排序(Radix Sort) 是桶排序的扩展,它的基本思想是:将整数按位数切割成不同的数字,然后按每个位数分别比较。 具体做法是: 将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。; 然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个

2021年3月26日
大约 8 分钟
排序 - 选择排序(Selection sort)详解
排序 - 选择排序(Selection sort)详解 选择排序介绍 选择排序(Selection sort) 是一种简单直观的排序算法。 它的基本思想是: 首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;; 接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。; 以此类推,直到所有元素均排序完

2021年3月26日
大约 4 分钟
排序 - 希尔排序(Shell Sort)详解
排序 - 希尔排序(Shell Sort)详解 希尔排序介绍 希尔排序(Shell Sort) 是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 希尔排序实质上是一种分组插入方法。 它的基本思想是: 对于n个待排序的数列,取一个小于n的整数gap(gap被称为步长)将待排序元素分成若干个组子

2021年3月26日
大约 8 分钟
排序 - 交换排序(Swap Sort)详解
排序 - 交换排序(Swap Sort)详解 交换类排序主要是通过两两比较待排元素的关键字,若发现与排序要求相逆,则“交换”之。在这类排序方法中最常见的是起泡排序(冒泡排序)和快速排序,其中快速排序是一种在实际应用中具有很好表现的算法。 冒泡排序 冒泡排序(Bubble Sort) 即比较相邻两元素大小,如果反序,则交换,若按照升序排序,则每次应将数据元素序

2021年3月26日
大约 8 分钟