PHP前端开发

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

百变鹏仔 1个月前 (01-18) #Python
文章标签 指南

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

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

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

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

选择排序的优化方法有:

立即学习“Python免费学习笔记(深入)”;

  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[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_pos 和 max_pos 的位置刚好重合于起始位置,我们需要对交换后的位置进行检查和处理。