📅  最后修改于: 2023-12-03 14:54:42.247000             🧑  作者: Mango
在编程中,经常需要对数据进行排序,其中排序3个数字是最基础的排序问题。下面演示两种排序算法来解决这个问题。
冒泡排序是排序算法中最简单的一种,其基本思想是通过相邻的元素比较和交换来把小的数交换到最前面,把大的数交换到最后面。
def bubble_sort(nums):
for i in range(len(nums) - 1):
for j in range(len(nums) - i - 1):
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
return nums
对于一个长度为n的数组,最多需要遍历n-1次以完成排序。每次遍历都从第一个元素开始,依次比较相邻两个元素,如果前面的元素大于后面的元素,则交换它们的位置。每次遍历完成后,都会把最大的元素移到数组末尾。因此,需要遍历n-1次才能完成排序。
时间复杂度:O(n^2)
空间复杂度:O(1)
>>> bubble_sort([3,2,1])
[1, 2, 3]
选择排序是一种简单直观的排序算法,思想也很容易理解,即每次从待排序的数据中选择最小值,放到已排好序的数据的末尾。
def selection_sort(nums):
for i in range(len(nums) - 1):
min_index = i
for j in range(i + 1, len(nums)):
if nums[j] < nums[min_index]:
min_index = j
nums[i], nums[min_index] = nums[min_index], nums[i]
return nums
选择排序的基本思想是将待排序的数据分为两个部分,一部分是已排序的数据,另一部分是未排序的数据。每次从未排序的数据中选择最小值,在已排序的数据末尾依次加入最小值。因此,选择排序需要遍历n-1次,每次遍历中需要查找出未排序数据中的最小值。
时间复杂度:O(n^2)
空间复杂度:O(1)
>>> selection_sort([3,2,1])
[1, 2, 3]
以上就是冒泡排序和选择排序两种算法来对3个数字进行排序的示例。这两种算法都是比较简单的排序算法,但是在实际应用中可能会因为数据量太大而导致效率低下。在选择算法的时候需要根据实际情况来选择合适的算法。