选择排序与冒泡排序

zcyszhda 0
# 选择排序
x=[1,9,8,7,5,6,4,2,3]
for i in range(0,len(x)-1): #len(x)-1:len(x)=9,range(end)包前不包后,i最大值为8,列表下标取值从左到右索引默认0开始的,所有x[8]=3,
    #但x[i]=2时,内循环x[j]的值包含3,会进行一次比较,所以外循环的i=7时结束,故range(end) 为len(x)-1
    for j in range(i+1,len(x)): #i+1:每次循环后,x[i]都会等于一个最小或最大的x值,可以跳过后续的比较
        if x[i]<x[j]: #选择的这个数字为x[i],然后与循环的x[j]进行比较,当条件成立后交换x[i]与x[j]的值。可根据条件控制升序或降序
            x[i],x[j]=x[j],x[i]
        print(x) #打印每次内循环后x值
print(x)

#冒泡排序
x=[1,9,8,7,5,6,4,2,3]
print('________________________________________')
for i in range(0,len(x)-1):#range(0,len(x)-1):因为i不作用于ix下标,所以没有固定值,循环次数为len(x)-1次即可
    for j in range(0,len(x)-1): #同选择排序
        if x[j]<x[j+1]:#每次循环将相邻的两个值进行比较,当条件成立后交换x[i]与x[j]的值
            x[j+1], x[j] = x[j],x[j+1]
        print(x)#打印每次内循环后x值
print(x)

发表评论