卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章33806本站已运行3827

Python选择排序的实现和优化指南

python选择排序的步骤与优化方法

Python选择排序的步骤与优化方法

选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)的元素,放到已排序序列的末尾。重复这个过程,直到全部待排序的数据元素排完为止。

选择排序的步骤可以总结如下:

  1. 遍历待排序的序列,标记当前位置为最小元素的位置。
  2. 从标记的位置后面的元素中找到一个比当前最小元素还要小的元素,并更新标记位置。
  3. 将标记位置的元素与最小元素位置的元素进行交换。
  4. 以标记位置后面的元素为新的起始位置,重复步骤2和步骤3。

选择排序的优化方法有:

  1. 在每次遍历时,同时找到最小元素和最大元素,并同时进行交换。这样可以减少交换次数,提高排序效率。
  2. 加入一个判断,如果遍历过程中没有发生交换,即已经完成排序,则提前终止排序过程。

下面是Python中的选择排序代码示例:

def selection_sort(arr):
    n = len(arr)
    for i in range(n - 1):
        min_pos = i
        max_pos = i
        for j in range(i + 1, n):
            if arr[j] < arr[min_pos]:
                min_pos = j
            if arr[j] > arr[max_pos]:
                max_pos = j
        if min_pos != i:
            arr[i], arr[min_pos] = arr[min_pos], arr[i]
        if max_pos == i:
            max_pos = min_pos
        if max_pos != n - 1 - i:
            arr[n - 1 - i], arr[max_pos] = arr[max_pos], arr[n - 1 - i]
        if min_pos == n - 1 - i:
            min_pos = max_pos
        if min_pos != i:
            arr[i], arr[min_pos] = arr[min_pos], arr[i]
    return arr

# 测试
arr = [64, 25, 12, 22, 11]
print("排序前:", arr)
sorted_arr = selection_sort(arr)
print("排序后:", sorted_arr)

以上代码中,我们使用变量 min_pos 记录最小元素的位置,使用变量 max_pos 记录最大元素的位置。在每次遍历中,通过比较更新这两个位置,然后进行交换。在列表长度为奇数时,如果 min_posmax_pos 的位置刚好重合于起始位置,我们需要对交换后的位置进行检查和处理。

卓越飞翔博客
上一篇: 常见应用场景:利用可变参数的Python函数
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏