1.冒泡排序:
1.第一轮,从第一个元素开始,第一个元素和后面的元素对比,如果比第一个元素大,就交换位置。每个相邻的元素进行比较,一轮后,最小的就排在了最后。
2.第二轮,从第二个元素开始和后面的元素作比较,如果比第二个元素大就交换位置,每个相邻的元素进行比较。
3.比较轮数为元素的个数-1
#冒泡排序
num1 = [6,4,3,2,1]
#控制比较轮次
for i in range(1,len(num1)):#每一轮比较后,往后挪动一位继续下一轮比较for j in range(len(num1)-i)if num1[j] > num1[j+1]:num1[j],num1[j+1] = num1[j+1],num1[j]print(num1)
结果:[1, 2, 3, 4, 6]
2.选择排序
选择排序思路
1.从第一个元素开始,第一个元素依次和后面的每个元素比较,如果第一个元素大就交换位置,第一轮比较后,最小的元素就放在了第一个位置
2.第二轮在第二个元素开始和后面的每个元素依次比较,如果第二个元素大,就交换位置。
#选择排序
def SelecterSort(n):#控制比较轮次for i in range(len(n)):#第i个元素和后面的每个元素依次比较for j in range(i+1,len(n)):if n[i]>n[j]:n[i],n[j] = n[j],n[i]print(n)n = [3,4,1,2,7,5,7]SelecterSort(n)
3.快速排序(递归)
1.选择第一个元素作为基数
2.比基数小的放左边列表(左列表在次选择基数,进行左右分开)
3.比基数大的放右边列表(右列表再次选择基数,进行左右分开)、
4.直到列表中只有一个数的时候,结束
#def q(arr):#递归出口if len(arr)<2:return arrelss:#基数z = arr[0]#左边排序l = [x for x in arr[1:] if x < z]r = [x for x in arr[1:] if x > z]return q(l) + [z] + q(r)if __name__ == '__main__':a = [1, 4, 3, 41, 6]aa = q(a)