当前位置: 首页 > 网络应用技术

一个时间改进的“排序算法”

时间:2023-03-06 16:30:17 网络应用技术

  本文主要介绍10种经典排序算法,包括:概括,图和代码实现。

  本文不仅适合学习分类算法的初学者,而且适合自我改善具有工作经验的代码农民。

  选择O(N2)O(1)非稳定插入O(N2)O(1)稳定的冒泡O(N2)O(1)稳定的山丘O(Nlogn)O(Nlogn)O(1)非稳定回报和O(NLOGN)o(n)稳定且快速O(nlogn)o(1)非稳定堆排序O(nlogn)o(1)稳定计数排序O(n + k)O(n + k)o(n + k)稳定的枪管排序O(n +)k)o(n + k)稳定基础排序o(n * k)o(n * k)稳定概述:

  每次遍历非订单号码时,选择最小数字和非订单号列的第一个数字。目前,非订单编号列逐渐缩短,直到全部有序为止。

  概述:

  从非订单编号列中,每次取出第一个数字,并将数字插入到有序的编号列中,直到完成非订单号码列为止。

  概述:每次穿越非订单编号列,相邻数字和两个之间的比较,每个遍历都可以“气泡”到末端的最大/最小数字,而非订单编号列逐渐变小,直到有序为止。。

  概述:Hill的分类可以理解为插入分类和冒泡分类的改进版本。首先,让以有序的方式按顺序在数组中任意间隔的元素。H的大小可以为H = N / 2.4。让H继续收缩。当h = 1时,也就是说,此时,此时在数组中具有任何间隔的元素是有序的。目前,该数组是有序的。

  希尔的分类使用了分裂的想法,因此外部周期时间的复杂性从o(n)提高到o(logn),总时间复杂性为o(nlogn)。

  概述:

  合并并分类分裂的想法,

  首先定义一个Mergesort(ARR,左,右),左

  那么可以得出递推公式:mergeSort(arr,left,right) = mergeSort(arr,left,mid)+mergeSort(arr,mid+1,right),mid=(left+right)/2;终止条件:left>=正确。

  目前,ARR数组是有序的,MID+1?右时是有序的,将合并(ARR,左,中,右)合并以合并两个有序的数字。

  概述:

  快速分类是通过多次比较和交换来进行分类。在分类中,要排序的数据分为两个独立的部分。对这两个部分进行排序,以便其中一些比另一部分小,然后继续以有序的方式实施递归分类的两个部分。

  概述:Hepsort是指使用堆的数据结构设计的排序算法。积累是一种近似完全二进制树的结构,同时符合累积的属性:子节点的键值或索引始终小于(或大于)其父节点。可以说堆叠顺序是用堆的概念进行分类的选择。将其分为两种方法:

  堆排序的平均时间复杂性是ο(nlogn)。

  概述:计数排序的核心是将输入数据值转换为在其他数组空间中存储的键。作为线性时间复杂性,计数排序数据需要输入数据必须是具有一定范围的整数。

  适用的方案:计数排序只能在数据范围较小的方案中使用。如果数据范围K比要排序的数据n要大得多,则不适合通过计数进行排序。此外,计数排序只能通过非阴性整数进行排序。如果要排序的数据是其他类型,则有必要将其转换为非负整数而不更改相对大小。

  概述:枪管排序是计数排序的升级版本。它使用函数的映射关系。有效的关键是否是确定此映射功能。为了使枪管排序更有效,我们需要做这两个方面:

  同时,为枪管中元素的排序选择了哪些比较分类算法是必不可少的。

  元素分布在枪管中:

  然后,将元素分类在每个桶中:

  概述:基础排序是一种非比较整数排序算法。原理是将整数数量切成不同的数字,然后根据每个数字进行比较。因为整数还可以表达float -point数字的数量(例如名称或日期)和特定格式,因此基本排序不是仅在整数上使用。

  笔记:

  本文的框架主要包括各种分类算法,包括概念,插图和代码。

  遵循本文的指示:

  1.每种算法的应用程序方案和关系

  2.如何使用上述工业级分类算法

  原始:https://juejin.cn/post/7095240735867273247