Python解决方案:排序K排序数组2025年1月5日 | 阅读6分钟 在此问题中,我们将得到一个整数数组。该数组将是 k 排序的。k 排序数组是指数组中的每个元素距离最终排序数组(目标排序数组)最多只有 k 步。 让我们来看一些例子来理解这个问题 示例 输入: 数组 = [5, 3, 2, 10, 9], K = 3 输出: 数组 = {2, 3, 5, 9, 10} 输入: 数组 = [10, 9, 7, 4, 60, 50], k = 4 输出: 数组 = [4, 7, 9, 10, 50, 60] 方法 - 1我们将使用插入排序算法来解决此问题。在此方法中,插入排序会将数组中的每个元素放置在正确的位置,从而对数组进行排序。这是一种有效的解决此问题的方法,因为我们可以使用每个元素的索引,该索引最多可以改变 k 个索引。 以下是我们将要遵循的解决此问题的步骤。
下面是展示如何使用插入排序解决此问题的 Python 代码。 代码 输出 [4, 7, 9, 10, 50, 60] 时间复杂度: 由于我们使用了嵌套循环,此方法的时间复杂度是非线性的。内循环将遍历最多 k 次。外循环将针对数组的每个元素运行。因此,它将运行 N 次。因此,此方法的最终时间复杂度为 O(N * k)。 辅助空间: 我们没有使用任何额外的空间来解决此问题;因此,此方法的空间复杂度为 O(1)。 方法 - 2在第二种方法中,我们将考虑 k 排序数组的属性。之前,每当当前元素不在正确顺序时,我们都会将每个元素向右移动。这会花费额外的时间,因为一个向左移动 x 次的元素如果在其左侧添加了 x 个元素,可能会再次回到相同的位置。因此,在此方法中,我们将仅在当前元素距离正确位置超过 k 个位置时才移动元素。此方法将优化程序的时间复杂度。此方法效果很好,因为给定的数组几乎是排序的;因此,我们不需要将每个元素都放到其正确的位置。已经执行了 k 次排序操作。 下面是此方法的实现。 代码 输出 4 7 9 10 50 60 时间复杂度: 此方法的时间复杂度比前一种方法要好。但是,这两种方法的最坏情况时间复杂度是相同的。时间复杂度相同,因为可能存在每个元素距离正确位置 k 的距离的情况。在这种情况下,内循环将最多运行 k 次。因此,这两种方法的最坏情况时间复杂度相同,即 O(N * k)。 辅助空间: 我们没有使用任何额外的空间来解决此问题;因此,此方法的空间复杂度为 O(1)。 方法 - 3在此方法中,我们将使用堆来解决此问题。 我们将遵循以下步骤来解决此问题。
下面是该方法在 Python 中的实现。 代码 输出 4 7 9 10 50 60 时间复杂度: 此方法的时间复杂度为 O(K) + O(m * log(k)) 辅助空间: 此方法的空间复杂度为 O(K),这是存储堆所需的空间。 |
基本 URL 基本 URL 是网站或资源的主地址。它作为构建其他相对 URL 的基础。把它想象成所有其他 URL 分支的根。通常,基本 URL 包括域名...
阅读 4 分钟
简介 今天,它是数据分析和自动化领域最简单、最受欢迎的语言之一。它通常用于电子表格数据。尽管如此,当涉及到...时,有时人们需要将 Excel 文件转换为 PDF 格式。
阅读 3 分钟
Python 以其简单性和多功能性而闻名,使其成为初学者和经验丰富的开发者的首选。为 Python 的多功能性做出贡献的关键特性之一是其广泛的内置数据类型。其中,容器数据类型起着至关重要的作用……
5 分钟阅读
Python 文档字符串指的是 Python 文档字符串,它基本上是字符串文字。它们提供了一种将文档与 Python 函数、模块、类和方法结合起来的合适方式。文档字符串可能会随程序一起执行,但它不会被忽略...
阅读 4 分钟
? ISO 8601 是一种表示日期和时间的国际标准。它规定了日期的格式为 YYYY-MM-DD,并且可以选择包含时间和时区偏移量。在 Python 中,您可以使用 datetime 轻松获取 ISO 8601 格式的当前日期和时间...
阅读 3 分钟
? 调试是开发中的一项主要活动,涉及定位、分析和可能从程序任何故障部分移除错误。调试的核心是使程序执行其应有的功能,产生正确、准确和可靠的输出。在此...中。
阅读 10 分钟
?在 Python 中,文件读写和创建都被内置了。在 Python 中可以处理的文件有两种:二进制文件(以二进制语言,即 0 和 1 编写)和文本文件。有六种不同的文件访问方式。只读('r')是……
阅读 4 分钟
Python 中 Map 简介:Map,在其他编程语言中通常称为字典或关联数组,是 Python 中一种重要的数据结构。它允许你存储键值对,其中每个键在 Map 中都是唯一的。Map 对于...非常有用和高效。
阅读 3 分钟
? 简介 值得注意的是,在微服务和现代 Web 等应用的时代,您的服务必须保持正常运行。实现这一点的一种方法是实施健康检查。通过健康检查,可以检查...的状态...
5 分钟阅读
简介:在本教程中,我们将学习 Python 中的网络编程。Python 在网络编程中起着重要作用。Python 的标准操作系统库支持网络概念,例如网络、数据编码和解码,并且使用 Python 编写网络服务比使用 C++ 更容易……
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India