思想
每一轮循环中,找到待排序列中的最小值,将其和待排序列头元素交换,最终达到有序
示例
对序列 [2, 4, 1, 3, 6, 5] 按升序排列
[2, 4, 1, 3, 6, 5] -> [1, 4, 2, 3, 6, 5] -> [1, 2, 4, 3, 6, 5] -> [1, 2, 3, 4, 6, 5] -> [1, 2, 3, 4, 6, 5] -> [1, 2, 3, 4, 5, 6]
代码
class Solution:
# @param {int[]} A an integer array
# @return nothing
def sortIntegers(self, A):
# Write your code here;
for i in range(len(A) - 1):
# 储存最小值的下标,减少交换次数
min_ind = i
for j in range(i + 1,len(A)):
if A[min_ind] > A[j]:
min_ind = j
if min_ind != i:
self.swap(A, min_ind, i)
def swap(self, A, i, j):
tmp = A[i]
A[i] = A[j]
A[j] = tmp
时间复杂度
O(n2)