关于选择排序,其算法的核心思想是:
固定位置,选择元素,即:先从序列中,找到最小的元素,放在第一个位置,之后找到第二小的元素,放在第二个元素,以此类推,就可以完成整个排序工作了。
核心代码如下:
def selectSort(listx):
xLen = len(listx)
for i in range(xLen):
min = i
#遍历完成之后,min就指向了最小元素的下标
for j in range(i+1, xLen):
if listx[min] > listx[j]:
min = j
#把最小的元素放到前面去。
temp = listx[min]
listx[min] = listx[i]
listx[i] = temp
return listx
if name ==‘main’:
#选择排序演示
print(selectSort([878,43,2,4333,4]))
执行结果:
[2, 4, 43, 878, 4333]
时间复杂度计算:
当我们遍历第一遍时,比较了n-1次,把最小的放在了第一个位置;
遍历第二遍时,比较了n-2次,把第二小的放在了第二个位置;
…
遍历第n-1遍时,比较了1次,把第二大的放在了倒数第二个位置。
这样,我们总共比较的次数是1+2+3+…+(n-1)= n(n-1)/2
在计算时间复杂度时,我们一般使用的大表示法,其时间复杂度,从小到大的排序是:
(1)<(logn)<(n)<(nlogn)<(n2)<…<(2n)<(n!)
我们上面所求得的n(n-1)/2,其时间复杂度,最大的影响因子是n2/2,故其时间复杂度是(n2)