排序算法
冒泡排序
理解为班长给班上的同学们按照身高排队。选出第一个人,和第二个做比较,如果第一个大,那就把第一个人往前提,如果不是,则不改变位置。选择第二个和第三个人比较,如果第二个大,那就把第二个和第三个交换位置。再把换过位置的第三个同学和第四个同学对比,如果还是大,就把他放到第四个同学的位置上,以此类推。
最后一个人到队尾的时候,再次选择第一个同学和第二个同学做对比,做同样的操作。直到选出第二高的同学。示意图如下:
在这个基础上,我们继续做修改,我们可以考虑,如果历遍了一次之后,发现一次交换都没有发生,说明数组已经是有序的了。所以我们可以将代码修改为实例2。
代码1:
def bubble_sort(list): for j in range(len(list)-1): for i in range(len(list)-j-1): if list[i]>list[i+1]: list[i],list[i+1]=list[i+1],list[i] return list
代码2:
def bubble_sort(list):
for j in range(len(list)-1):
count=0
for i in range(len(list)-j-1):
if list[i]>list[i+1]:
list[i],list[i+1]=list[i+1],list[i]
count+=1
if count==0:
return list
return list
选择排序
将数据分为两部分。前面部分有序,后面部分无序。前面由小到大。然后操作时选择一个容器,先选择第一个数值装进容器,然后依次与后面的值对比,如果容器中的值更大,则做交换,直到将所有的遍历。
插入排序