算法-排序:lowB三人组
本节内容:
- lowB介绍
- 冒泡排序
- 选择排序
- 插入排序
一.lowB介绍
排序主要看时间复杂度,排序的关键点,有序区和无序区,时间复杂度都是O(n2)
二.冒泡排序
冒泡思路:
1.首先,列表每两个相邻的数,如果前面的笔后面的大,那么交换这两个数.
代码实现关键点:
1.趟数
2.无序区
def bubble_sort(li): for i in range(len(li)-1): for j in range(len(li)-i-1): if li[j]>li[j+1]: li[j],li[j+1]=li[j+1],li[j] #把列表中的每个循环一遍,从后面开始走,每个走完有序区就是i
#如果冒泡排序中执行一趟而没有交换,则列表已经是有序状态,可以直接结束算法。 def bubble_sort(li): for i in range(len(li)-1): exchange=False for j in range(len(li)-i-1): if li[j]>li[j+1]: li[j],li[j+1]=li[j+1],li[j] exchange=True if not exchange: #说明每个列表中每个元素都有序 return
三.选择排序
选择思路:
1.一趟遍历记录最小的数,放到第一个位置
2.再一趟遍历记录剩余列表中最小的数,继续放置
代码实现关键点:
1.无序区
2.最小数的位置
def select_sort(li): for i in range(len(li)-1): min_loc=i for j in range(i+1,len(li)) if li[j]<li[min_loc]: min_loc=j if min_loc !=i: li[i],li[min_loc]=li[min_loc],li[i] #默认第一个数最小,遍历后面的所有数,取出第一个索引,然后把后面每个索引上的值和第一上的比较,如果比第一个小就赋值,这样min_loc始终就是最小的值的索引,然后如果min_lock改变,那么调换位置
四.插入排序
插入思路(想想抽扑克牌,理牌):
1.列表被分为有序区和无序区两个部分,最初有序区只有一个元素。
2.每次从无序区选择一个元素,插入到有序区的位置,直到无序区变空
代码实现关键:
1.摸到的牌
2.手里的牌
def insert_sort(li): for i in range(1,len(li)): tmp=li[i] j=i-1 while j>=0 and tmp<li[j]: li[j+1]=li[j] j=j-1 li[j+1]=tmp #暂时没写

浙公网安备 33010602011771号