
十大基础排序算法
文章平均质量分 85
主要介绍十大基础排序,在内部有两个示例代码,一个代码是基础原理讲解,一个是使用案例.
杨胜增
喜欢Python喜欢Java喜欢Vue,自我评价初级运维,中级逆向爬虫,中级后端,初级前端,初级网络。
期待遇到志同道合的朋友,一起学习一起进步!
展开
-
十大基础排序算法一一计数排序详解
计数排序(Counting Sort)是一种非比较型排序算法,核心思想是通过统计序列中各元素出现的次数,从而直接确定它们在排好序后的正确位置。它常见于元素值范围相对较小、并且需要线性时间或接近线性时间完成排序的场景。找范围:先扫描一遍序列,确认元素的最小值、最大值,从而确定计数数组的大小。计数统计:遍历序列,统计每个可能取值出现的次数,把结果放进计数数组中(例如前缀和:对计数数组做一次前缀和(或累加和)运算,这样表示的是“小于等于 value的元素个数”。反向填充。原创 2025-01-11 11:21:58 · 970 阅读 · 0 评论 -
十大基础排序算法一一归并排序详解
归并排序(Merge Sort)将序列一分为二,分别对左右子序列进行排序;将已排好序的左右子序列进行“合并”,得到完整的有序序列。它最重要、也是最复杂的部分在于“合并(merge)”步骤:给定两个已经分别有序的子序列,如何高效地合并成一个有序序列。稳定性:如果两个元素的值相等,排序后它们的相对位置不会改变(在合并时不会打乱原有顺序)。可用于外部排序:当数据量非常庞大,以至于只能部分存储在内存,部分存储在磁盘或其他介质时,归并排序通常是首选方案之一。归并排序基本思路。原创 2025-01-11 11:20:40 · 711 阅读 · 0 评论 -
十大基础排序算法一一插入排序详解
*插入排序(Insertion Sort)**是一个在我们日常生活中非常常见的排序思路:就像打扑克牌一样,我们拿到新牌后,要把它插入到已有“排好”的牌组里,使得整个牌组依旧保持有序。从第二个元素开始,认为第一个元素已经是排好序的。将当前元素与前面已经排好序的元素依次进行比较,若发现它更小,就将这些元素向后“挪动”一格,给当前元素腾位置;找到合适的位置后,将当前元素插入。重复以上步骤,直到所有元素都被插入到正确位置。当序列已经接近有序时,插入排序效率非常高;原创 2025-01-11 11:16:52 · 487 阅读 · 0 评论 -
十大基础排序算法一一快速排序详解
快速排序(Quick Sort)是一种非常常用的、基于“分而治之(Divide and Conquer)”思想的排序算法。选定一个基准元素(Pivot):可以是首元素、尾元素、或任意随机元素等;划分(Partition):将数组中小于(或等于)该基准元素的数放在基准元素的左边,将大于该基准元素的数放在基准元素的右边;递归排序:对基准元素左侧子序列和右侧子序列分别递归地进行快速排序,直到整个序列有序。原创 2025-01-11 11:18:44 · 679 阅读 · 0 评论 -
十大基础排序算法一一基数排序详解
基数排序(Radix Sort)是一种非比较型排序算法,它通常依赖于稳定的子排序(例如计数排序)来完成。它通过将待排序的数字(或字符串)从最低位(或最高位)开始,一位(或一部分)一部分地进行“分桶”或“分类”,再将这些结果合并起来,从而完成整个序列的排序。最常见的实现是从最低位开始,对所有元素按当前位进行分类(或计数排序);将分类结果合并,保证顺序稳定;再继续对更高一位进行分类;直到最高位被处理完为止。基数排序特别适用于对定长整数字符串等进行排序,或者当每个数位都比较容易被提取和比较时。原创 2025-01-11 11:22:57 · 346 阅读 · 0 评论 -
十大基础排序算法一一堆排序详解
堆排序(Heap Sort)是利用堆(Heap)这种特殊的完全二叉树结构所设计的一种排序算法。堆分为大顶堆和小顶堆大顶堆:每个节点的值都大于或等于其子节点的值,根节点最大。小顶堆:每个节点的值都小于或等于其子节点的值,根节点最小。在升序排序时,一般使用大顶堆先把待排序的数组“堆化”成一个大顶堆,此时堆顶(根节点)即是整个序列的最大值;将堆顶元素与堆末尾元素交换,然后“堆的有效区间”缩小一格,再对前面部分重新进行“下沉”操作,保持其堆结构;不断把当前堆顶放到数组后面,直到所有元素都排好序。原创 2025-01-11 11:19:45 · 511 阅读 · 0 评论 -
十大基础排序算法一一冒泡排序详解
冒泡排序(Bubble Sort)重复地遍历要排序的列表/数组;每次在遍历中,比较相邻的两个元素;如果发现前一个元素比后一个元素大(满足“升序”排序需求时),就交换它们的位置;通过多次遍历,越“重”的元素会逐步“沉”到列表/数组的末尾,像气泡一样依次从底部(最前端)向上冒。由于它需要多次遍历、反复比较相邻元素并进行交换,因此名字就叫做冒泡排序。冒泡排序基本思路:相邻比较并交换,大的元素逐步后移。适用场景:学习算法原理与演示小规模数据、简单场景。原创 2025-01-11 11:13:21 · 606 阅读 · 0 评论 -
十大基础排序算法一一桶排序详解
桶排序(Bucket Sort)是一种将元素分到若干个“桶”中的排序算法。每个桶内的元素再分别进行排序,最后再将桶内元素依次合并得到有序结果。它的思想与“计数排序”有些相似,也是一种非比较型排序算法,但桶排序适用的场景稍有不同,更依赖数据的分布特性。划分区间或范围:根据数据特征或数据分布,将整个数值范围划分为若干个“桶”;元素分桶:把各个元素根据其值所处的区间,分配到对应的桶中;桶内排序:对每个桶内的元素,使用合适的算法(如插入排序、快速排序、计数排序等)进行排序;合并结果。原创 2025-01-11 11:23:43 · 626 阅读 · 0 评论 -
十大基础排序算法一一选择排序详解
*选择排序(Selection Sort)**是一种简单直观的排序算法。在未排序序列中找到最小(或最大)的元素;将该元素放到序列最前面(或最后面);然后在剩下的未排序部分中继续进行相同的操作,直到整个序列有序。与冒泡排序相比,它每一轮只需要做一次交换,但依然要比较多次(在一轮里,需要扫描所有未排序部分来确定最小元素的位置)。选择排序基本思路:每轮从未排序部分中寻找最小(或最大)元素,放到当前序列的最前面(或最后面)。优点每一轮只进行一次交换,适合某些限制“交换次数”的场景。缺点。原创 2025-01-11 11:15:31 · 594 阅读 · 0 评论 -
十大基础排序算法一一希尔排序详解
*希尔排序(Shell Sort)**是插入排序的一种更高效改进版本。将原序列按照一定的“步长”(gap)进行分组,对于每个分组内的元素使用“插入排序”;然后逐步缩小步长(通常将步长减半或采用其他序列规则),再次对分组进行插入排序;当步长缩小到 1 时,即对整个序列进行一次普通的插入排序,此时序列已经比较“接近有序”,所以效率会明显提高。它通过让元素能够跨越较大的距离进行比较和交换,来快速减少序列中的逆序(即某些应该排在前面的元素却在后面)。原创 2025-01-11 11:18:01 · 832 阅读 · 0 评论