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]
选择排序思路
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)
1.选择第一个元素作为基数
2.比基数小的放左边列表(左列表在次选择基数,进行左右分开)
3.比基数大的放右边列表(右列表再次选择基数,进行左右分开)、
4.直到列表中只有一个数的时候,结束
- #def q(arr):
- #递归出口
- if len(arr)<2:
- return arr
- elss:
- #基数
- 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)