选择排序Python
时间: 2023-11-05 20:05:16 浏览: 43
选择排序是一种简单且直观的排序算法,它的主要思想是每次从未排序的部分中选择最小的元素,并将其放在已排序部分的末尾。通过多次迭代,将所有的元素都按照从小到大的顺序排列。
以下是Python实现选择排序的代码:
```python
def selection_sort(array):
for i in range(len(array)-1):
min_index = i
for j in range(i+1, len(array)):
if array[j] < array[min_index]:
min_index = j
if min_index != i:
array[i], array[min_index] = array[min_index], array[i]
return array
if __name__ == '__main__':
array = [10, 17, 50, 7, 30, 24, 27, 45, 15, 5, 36, 21]
print(selection_sort(array))
```
选择排序的时间复杂度为O(n^2),其中n是待排序的元素个数。每一轮排序需要进行n-i次比较,共进行n-1轮排序。
选择排序的一个特点是不管待排序列表的初始状态如何,都不会影响排序的时间复杂度。但由于每次只是交换相邻元素,所以选择排序是一种不稳定的排序算法。
相关问题
选择排序python
下面是 Python 实现选择排序的代码:
```python
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
```
这个算法的时间复杂度为 $O(n^2)$,不过它比冒泡排序要快一些,因为它每次只需要进行一次交换操作。
选择排序 python
以下是Python中的选择排序实现:
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]
print(selection_sort(arr)) # 输出 [11, 12, 22, 25, 64]