冒泡排序
#冒泡排序:每一次相邻的两个数做比较,大的往后移动一位,每次循环都会把最大的值(升序)或最小的值(降序)放在末端
# 冒泡排序
a = [6,1,9,2,15,11]
num = len(a)
for n in range(0,num-1):
is_change = False
for m in range(0, num-1-n):
if a[m] > a[m+1]:
a[m], a[m+1] = a[m+1], a[m] #相邻的两个值比较后,a[m]与a[m+1]互换位置
is_change = True
if not is_change:
break
print(a)
最优时间复杂度: O(n)
最坏时间复杂度: O(n^2)
空间复杂度: O(1)
#例如冒泡排序
a = [6,1,9,2,15,11]
冒泡排序对a进行从小到大排序
6,1,9,2,15,11
第一次循环
一、 1,6,9,2,15,11
二、 1,6,9,2,15,11
三、 1,6,2,9,15,11
四、 1,6,2,9,15,11
五、 1,6,2,9,11,15
第二次循环
1,6,2,9,11
一、 1,6,2,9,11
二、 1,2,6,9,11
三、 1,2,6,9,11
四、 1,2,6,9,11
第三次循环
1,2,6,9
一、1,2,6,9
二、1,2,6,9
三、1,2,6,9
第四次循环
1,2,6
一、1,2,6
二、1,2,6
第五次循环
1,2
一、1,2
快速排序
#快速排序:先拿第一个数与其余的全部数依次做比较,每次循环都把最大的值(降序)或最小的值(升序)放在首位
#快速排序:
a = [6, 1, 9, 2, 15, 11]
num = len(a)
for i in range(0, num-1):
for j in range(i+1, num): #每次循环,拿a[i]的值跟(a[i+1]-a[num])的值依次做比较
if a[i]<a[j]:
a[i], a[j] = a[j], a[i]
print(a)
最优时间复杂度: O(n log n)
最坏时间复杂度: O(n^2)
空间复杂度: O(1)
#快速排序
例如:6,1,9,2,15,11
1 6,9,2,15,11
2 9,6,15,11
6 9,15,11
9 15,11
11 15
15