编写 Python 程序对 0、1 和 2 的列表进行排序2024 年 8 月 29 日 | 4 分钟阅读 在本教程中,我们编写了排序 0、1 和 2 列表的程序。这里的 0、1 和 2 列表是指列表只包含 0、1 和 2 形式的数据。例如,一个包含 11 个元素的数组,这些元素如下:0、1、1、2、2、1、0、2、1、0、0。 问题陈述问题是给定一个大小为 N 的数组,其中只包含 0、1 和 2;请将数组按升序排序。例如: 示例 - 1 示例 - 2 解决方案我们将使用以下方法来解决这个问题。
让我们来理解一下暴力破解法。 方法 - 1要使用暴力破解法解决这个问题,我们将使用冒泡排序算法。让我们来理解下面的代码片段。 示例 - 输出 The Given Array is: [2, 0, 2, 1, 1, 0] The Sorted Array is: [0, 0, 1, 1, 2, 2] 解释 - 在上面的代码中,我们定义了一个 sort_array() 函数,它接受一个输入数组 "arr" 作为参数,并返回一个排序后的输入数组版本。 该函数使用冒泡排序算法对数组进行排序。该算法的基本思想是重复比较数组中的相邻元素,如果它们的顺序错误,则交换它们。重复此过程,直到整个数组排序完毕。 该函数首先使用内置的 "len" 函数确定输入数组的长度,并将其赋值给变量 "n"。然后,它使用两个 "for" 循环进入嵌套循环结构,以迭代数组中的每个元素。外层循环迭代从第一个元素到最后一个元素的每个数组元素,而内层循环迭代从第一个元素到最后一个未排序元素的每个元素。 在嵌套循环中,函数使用 "if" 语句比较数组中的相邻元素,以检查左边的元素是否大于右边的元素。如果此条件为真,则使用元组赋值语句交换这两个元素。 arr[j], arr[j + 1] = arr[j + 1], arr[j] 语句是交换 arr[j] 和 arr[j+1] 值的简写方式。它会创建一个包含要交换的两个值的临时元组,然后解包该元组并将值分配给各自的变量。 嵌套循环完成后,函数使用 "return" 语句返回已排序的输入数组。最终输出将是相同的数组,但其元素已按升序排序。 方法 - 2为了排序 0、1 和 2,我们将使用 **荷兰国旗算法**,这是一个相当高效的算法,用于处理具有不同元素的数组。让我们来理解下面的示例。 示例 - 输出 The Given Array is: [2, 0, 2, 1, 1, 0] The Sorted Array is: [0, 0, 1, 1, 2, 2] 解释 - 在上面的代码中,我们定义了 sort_arr() 函数,它接收一个 0、1 和 2 的列表并返回排序后的列表。首先,我们初始化三个指针 "low"、"mid" 和 "high",它们用于跟踪数组中 0、1 和 2 的位置。 while 循环一直持续到 "mid" 指针到达数组末尾。在循环中,我们需要考虑三种情况:
循环结束后,数组将按升序排序,所有 0 都在前面,然后是所有 1,最后是所有 2。我们使用 "return" 语句返回排序后的数组。 该算法的时间复杂度为 O(n),其中 n 是输入数组的长度,空间复杂度为 O(1),因为它在原地排序数组,不使用任何额外空间。 结论在本教程中,我们通过两种方法解决了 0、1 和 2 列表的排序问题——第一种方法我们使用了时间复杂度为 0(N2) 的冒泡排序算法。在第二种方法中,我们实现了 **荷兰国旗算法**,它比冒泡排序更有效,因为其时间复杂度为 0(N)。 |
人工神经网络 (ANN) 是数据科学中最前沿的机器学习模型。它们的性能神秘地令人惊叹,即使只有一个隐藏层,它们也能以任何所需的精度近似任何函数。既然如此,为什么还会有人选择其他模型呢?
阅读9分钟
在原始 pandas 手册中,空值被描述为缺失值。由于大多数程序员都这样做,我们可以将 pandas 中的空值或缺失数据指定为 NaN。NaN,意思是“非数字”,是表示值缺失的常用方法之一...
5 分钟阅读
尽管移动和 Web 应用程序似乎占据了软件开发市场,但对传统的图形用户界面 (GUI) 桌面应用程序仍然存在需求。对于热衷于使用 Python 编程语言创建此类应用程序的开发人员来说,有...
阅读25分钟
在本教程中,我们将学习如何使用 Python 程序获取国家信息。我们将讨论一个 Python 模块,以获取有关首都、货币、官方语言和许多其他信息。我们还将学习如何从电话号码中获取国家信息...
5 分钟阅读
很明显,过去很多次,我们都需要从一个地方复制或粘贴一些东西、一些文本或消息到另一个地方。复制粘贴被认为是最简单、最容易、最省时的过程。我们很难想象它有多大...
7 分钟阅读
Python 自动化测试可以通过 Selenium Python 模块完成。Selenium Python 绑定提供了一个简单的 API,用于使用 Selenium WebDriver 编写功能和验收测试。访问“使用 get 方法导航链接 - Selenium Python”以学习如何使用...
阅读 2 分钟
在本教程中,我们将学习用户如何使用 Python 根据条件在 Pandas DataFrame 中选择行。用户可以使用“>”、“=”、“<=”、“>=”、“!=”运算符根据特定列值选择行。条件:我们将讨论可以应用于...
阅读20分钟
? 在 Python 中,“NaN”代表“非数字”,是一个特殊值,用于表示缺失或未定义的数值数据。它是 IEEE(电气和电子工程师协会)浮点算术标准定义的一个特殊值。它通常用于表示...
阅读 3 分钟
零假设和备择假设是假设检验的两种不同方法。零假设的前提是一个事件(也称为基本事实)。备择假设是与主要假设相悖的推定。想象一个七十多岁的女性,她有...
14 分钟阅读
引言:平流扩散方程是物理学和设计中的核心思想,其应用范围从流体动力学到热运动。物理学和工程学领域因平流、扩散和各种边界条件的复杂相互作用而得到增强……
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India