zltzlt 发表于 2020-3-20 13:27:44

Python 排序方法:选择排序

Python 选择排序

原理

选择排序就是重复 “从待排序的数据中寻找最小值,将其与序列最左边的数字进行交换” 这一操作的算法。

选择排序使用了线性查找来寻找最小值,因此在第 1 轮中需要比较 n - 1 个数字,第 2 轮需要比较 n - 2 个数字……到第 n - 1 轮的时候就只需比较 1 个数字了。

因此,总的比较次数与冒泡排序的相同,都是 (n-1)+(n-2)+…+1 ≈ n2/2 次。

每轮中交换数字的次数最多为 1 次。

如果输入数据就是按从小到大的顺序排列的,便不需要进行任何交换。

选择排序的时间复杂度和冒泡排序的一样,都为 O(n2)。

代码

from random import randint


def sel_sort(nums):
    for i in range(0, len(nums)):
      min_ = nums
      min_idx = i
      for j in range(i, len(nums)):
            if (new_min := nums) < min_:
                min_ = new_min
                min_idx = j
      nums, nums = nums, nums


arr =
print(f"原数组:{arr}")
sel_sort(arr)
print(f"排序后数组:{arr}")

qiuyouzhi 发表于 2020-3-20 13:36:36

最简单的(我最喜欢用的):
>>> def mysort(a):
        for i in range(len(a)):
                for j in range(len(a)):
                        if a > a:
                                a, a = a, a

                               
>>> a =
>>> mysort(a)
>>> a


虽然数一多就GG,但是它简单啊!
(能用sort尽量用sort{:10_256:} )
页: [1]
查看完整版本: Python 排序方法:选择排序