📜  排序3个数字(1)

📅  最后修改于: 2023-12-03 14:54:42.247000             🧑  作者: Mango

排序3个数字

在编程中,经常需要对数据进行排序,其中排序3个数字是最基础的排序问题。下面演示两种排序算法来解决这个问题。

算法1:冒泡排序

冒泡排序是排序算法中最简单的一种,其基本思想是通过相邻的元素比较和交换来把小的数交换到最前面,把大的数交换到最后面。

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]
算法2:选择排序

选择排序是一种简单直观的排序算法,思想也很容易理解,即每次从待排序的数据中选择最小值,放到已排好序的数据的末尾。

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个数字进行排序的示例。这两种算法都是比较简单的排序算法,但是在实际应用中可能会因为数据量太大而导致效率低下。在选择算法的时候需要根据实际情况来选择合适的算法。