一、冒泡排序
1.1 思路
每次比较两个数,如果前面比后面大,交换。最终最大的会到列表最后面
1.2 代码
#冒泡排序,n2
import random
def bubble_sort(list):
for i in range(len(list)-1):
for j in range(len(list)-i-1):
if list[j]>list[j+1]:
list[j],list[j+1]=list[j+1],list[j]
#随机生成10个数的列表,范围是0-100
list=[random.randint(0,100) for i in range(10)]
print(list)
#冒泡排序后的列表
bubble_sort(list)
print(list)
二、选择排序(改进前)
2.1 思路
每次找到最小的元素放在一个空列表后面,再把原列表中最小的元素删除
2.2 代码
#选择排序,n2
def select_sort(list):
list_new=[]
for i in range(len(list)):
min_val=min(list)
list_new.append(min_val)
list.remove(min_val)
return list_new
#随机生成10个数的列表,范围是0-100
list=[random.randint(0,100) for i in range(10)]
print(list)
print(select_sort(list))
2.3 弊端
新建一个列表,如果列表长度特别长。内存占用空间大。
min函数,remove函数时间复杂度都是n
三、选择排序(改进后)
3.1 思路
改进后的选择排序,找到最小的元素和第一个位置的元素交换,再缩小查找范围
3.2 代码
#改进后的选择排序,n2
def modified_select_sort(list):
for i in range(len(list)-1):
min_ind=i
for j in range(i+1,len(list)):
if list[j]<list[min_ind]:
min_ind=j
list[i],list[min_ind]=list[min_ind],list[i]
#随机生成10个数的列表,范围是0-100
list=[random.randint(0,100) for i in range(10)]
print(list)
modified_select_sort(list)
print(list)
四、插入排序
4.1 思路
每次拿出列表的第一个元素,再找到合适位置放下。
比如53421,先拿出5.再拿出3比5大,把5往后移,3放在5前面。再拿出4,比5大比3小,5往后移,放3后面。。。。。
4.2 代码
#插入排序
def insert_sort(list):
for i in range(1,len(list)):
tem=list[i]
j=i-1
while j>=0 and list[j]>tem:
list[j+1]=list[j]
j-=1
list[j+1]=tem
#随机生成10个数的列表,范围是0-100
list=[random.randint(0,100) for i in range(10)]
print(list)
insert_sort(list)
print(list)