python算法-选择排序
核心算法:固定位置,选择元素,即:先从序列中,找到最小的元素,放在第一个位置,之后找到第二小的元素,放在第二个元素,以此类推,就可以完成整个排序工作了。
代码示例如下:
x=[6,3,2,7,4,9,5]
xLen = len(x)
for i in range(xLen-1):
min = i
#遍历完成之后,min就指向了最小元素的下标
for j in range(i+1, xLen):
if x[min] > x[j]:
min = j
#把将最小的元素值和坐标为i的元素值进行交换
temp = x[min]
x[min] = x[i]
x[i] = temp
print(x)
返回结果:[2, 3, 4, 5, 6, 7, 9]
代码解释:
内层循环:
for j in range(i+1, xLen):
if listx[min] > listx[j]:
min = j
i表示外层循环执行时,使用的元素坐标。此代码使用min变量存储的元素坐标对应的值和i坐标后的所有元素进行逐一比较,如果大于,则将min变量存储的坐标改为j。
外层循环:
第一次循环找到最小值,第二个循环找到次小值,第三次循环找到第三小的值,以此类推循环结束就将所有值按照升序进行排序了。
代码逻辑算法过程解析:
x=[6,3,2,7,4,9,5]
xLen = len(x)
n=0
for i in range(xLen-1):
min = i
print("i=%d"%i)
#遍历完成之后,min就指向了最小元素的下标
for j in range(i+1, xLen):
print("j=%d"%j)
print("%d和%d比较大小"%(x[min],x[j]))
if x[min] > x[j]:
min = j
print("min=%d"% min)
#把将最小的元素值和坐标为i的元素值进行交换
temp = x[min]
x[min] = x[i]
x[i] = temp
n+=1
print ("第%d次排序结果:%s"%(n,x))
print("最后排序结果:%s"%x)
代码打印结果: