选择排序算法是一种简单且直观的排序算法,其基本思想是将数据集合划分成已排序和未排序两部分,每次从未排序的集合中找到最小的元素,然后将其交换到已排序集合的末尾。如此迭代,直到未排序集合为空为止。
下面是选择排序算法的实现过程:
- 遍历数据集合,将第一个元素设为已排序的最后一个元素,将剩余的元素视为未排序部分。
- 遍历未排序部分,找到其中最小的元素。
- 将最小的元素与未排序部分的第一个元素进行交换,将该元素设为已排序的最后一个元素。
- 重复上述过程,直到未排序部分为空。
以下是一段示例代码,该代码使用选择排序算法对一个整数数组进行排序:
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_index = i
for j in range(i + 1, n):
if arr[j] < arr[min_index]:
min_index = j
arr[i], arr[min_index] = arr[min_index], arr[i]
return arr
# 示例
arr = [64, 25, 12, 22, 11]
sorted_arr = selection_sort(arr)
print("排序前的数组:", arr)
print("排序后的数组:", sorted_arr)
运行结果:
排序前的数组: [64, 25, 12, 22, 11]
排序后的数组: [11, 12, 22, 25, 64]
上述代码中,selection_sort
函数接受一个整数数组作为输入,并返回一个新的已排序的数组。该函数采用了两个循环嵌套的方式,第一个循环用于遍历整个数组,从头到尾确定已排序部分的范围。第二个循环用于遍历未排序部分,寻找其中最小的元素。通过这种方式,每次迭代都能将未排序部分中的最小元素放到已排序部分的末尾,最终实现将整个数组排序的目的。
以下是另一个示例,该示例使用选择排序算法将一个字符串列表按照字母顺序进行排序:
def selection_sort_str(str_list):
n = len(str_list)
for i in range(n):
min_index = i
for j in range(i + 1, n):
if str_list[j] < str_list[min_index]:
min_index = j
str_list[i], str_list[min_index] = str_list[min_index], str_list[i]
return str_list
# 示例
animals = ['cat', 'dog', 'elephant', 'ant', 'rat']
sorted_animals = selection_sort_str(animals)
print("排序前的字符串列表:", animals)
print("排序后的字符串列表:", sorted_animals)
运行结果:
排序前的字符串列表: ['cat', 'dog', 'elephant', 'ant', 'rat']
排序后的字符串列表: ['ant', 'cat', 'dog', 'elephant', 'rat']
上述代码同样采用了选择排序算法,不同之处在于该算法用于对字符串列表进行排序。通过字符串比较的方式,该算法可以正确地将字符串列表按照字母顺序进行排序。