Python中的排序算法2025年4月17日 | 阅读7分钟 排序是指以特定顺序排列数据的过程。数据(通常是数值)被组织起来,涉及按升序或降序排列算法。它是一种更合理地表示数据的方法。它是软件工程中一个至关重要的部分。如果我们用来排序数据的方法效率低下,那么对大量数据进行排序可能需要大量的计算资源。算法的效率与它所处理的项目的数量成正比。复杂的排序方法对于少量数据来说可能得不偿失。另一方面,我们的目标是最大化大量数据的效率和速度。将讨论各种排序方法,并分析其时间复杂度。 ![]() 以下是一些排序的实际应用示例:
在介绍用于排序数据的各种方法之前,我们应该考虑可能用于评估排序过程的任务。需要一种有组织的方法来比较值,以确定它们是否都已排序。首先,我们应该比较值,以确定哪个更小,哪个更大,以便可以将它们按顺序排列。 排序的各种变体包括:
排序技术Python 实现的各种排序方法包括:
冒泡排序冒泡排序是一种直接的排序算法。这种排序技术反复检查两个相邻元素的位置,如果需要则交换它们。它也称为沉降排序。在平均和最坏情况下,其时间复杂度为 O(n²),而在最佳情况下为 O(n)。在数组中,冒泡排序中的元素可以通过相互交换位置来自己排序,以便它们都可以按升序排列其级别。 换句话说,我们比较两个相邻的元素,以确定它们的顺序是否不正确,如果不正确,我们就交换它们。如果数组要按升序排列,那么 arr[i] > arr[j],反之亦然,其中 s 是数组的大小。 示例 在这里,我们使用冒泡排序来排序以下列表。 序列:5、18、3、14 第一次迭代 (5,18,3,14) -> (5,18,3,14),前两个元素在此处进行比较,但由于它们已按升序排列,因此保持不变。 (5,18,3,14) -> (5,3,18,14)。此处,第二和第三个元素按升序比较并交换(10 小于 23)。 (5,18,3,14) -> (5,3,14,18)。此处,第三和第四个元素按升序比较并交换(1 小于 23)。 第一轮迭代后,最大且已正确排序的元素位于最右边的位置。 第二次迭代 (5,3,14,18) -> (5,3,14,18)。再次,由于它们已按升序排列,因此比较前两个元素并保持不变。 第一轮迭代后,其余元素已排序。第二轮迭代后,给定数组按升序排序。因此,最终结果是 3、5、14、18。 第三次迭代 (3,5,14,18) -> (3,5,14,19)。在此情况下,前两个元素按升序比较并交换。 第一轮和第二轮迭代已对剩余元素进行了排序。第三轮迭代后,给定的数组按升序排序。结果是 3,5,14,18。 冒泡排序实现 输出 Sorted array is: 3 5 14 18
选择排序这种排序方法重复查找最小元素并按升序排列。冒泡排序不需要额外的 RAM。在此方法执行期间,维护两个子数组,一个子数组已排序,另一个子数组未排序。每次选择排序迭代时,将未排序子数组中的最小成员放入已排序子数组中。选择排序比冒泡排序更有效。排序的平均、最坏和最佳情况时间复杂度均为 O(n²)。 示例 在这里,我们使用选择排序来排序以下序列。 序列:9、4、3、8 (9, 4, 3, 8) -> (3, 9, 4, 8),在第一次遍历中找到最小元素 3,并将其放在首位。 (3, 9, 4, 8) -> (3, 4, 9, 8),在第二次遍历中找到第二小的元素 4,并将其分配给第二个位置。 (3, 4, 9, 8) -> (3, 4, 8, 9),在第三次遍历中找到下一个最小元素 8,并将其放在第三个位置。 上述迭代后,最终数组按排序顺序排列,即 3、4、8、9。 代码 输出 Sorted Array in Ascending Order is : [3, 4, 8, 9]
插入排序这种排序方法始终维护一个已排序的子数组。将数组未排序部分的值正确地放置在已排序部分中。与冒泡排序或选择排序等算法相比,它在实践中更有效。插入排序的平均和最坏情况时间复杂度为 O(n²),而最佳情况时间复杂度为 O(n)。 示例 在这里,我们使用插入排序来排序以下序列。 序列:7、2、1、6 (7, 2, 1, 6) -> (2, 7, 1, 6),第一次迭代比较前两个元素;在这种情况下,2 小于 7,因此将 2 放在 7 前面。 (2, 7, 1, 6) -> (2, 1, 7, 6),第二次迭代比较第二个和第三个元素;在这种情况下,1 小于 7,将 1 放在 7 前面。 (2, 1, 7, 6) -> (1, 2, 7, 6)。由于第二次重复后元素 (1, 7) 不按升序排列,因此将它们放在前面。因此,将 1 放在 2 前面。 (1, 2, 7, 6) -> (1, 2, 6, 7),在本次循环中交换所有前面的元素后,将比较并交换最后两个元素。 插入排序实现 输出 The unsorted list is: [7, 2, 1, 6] The sorted new list is: [1, 2, 6, 7]
下一主题Python 中的冒泡排序 |
我们请求您订阅我们的新闻通讯以获取最新更新。