把他 color 无序 def 就是 基本 tro 找到 第一个
基本思想:它的思路很有特点循环,两两向后比较。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
- #冒泡排序
- # def bubble_sort(li):
- # for i in range(len(li)-1): #走一趟,循环的次数
- # for j in range(len(li)-i-1): #有序列为,len(li)-i,去掉有序不循环
- # if li[j]>li[j+1]: #如果后一个数大,那就交换
- # li[j],li[j+1]=li[j+1],li[j]
基本思想:从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了。
- #选择排序
- def select_sort(li):
- for i in range(len(li)-1): #循环趟
- min_loc=i #设置i为最小下标
- for j in range(1+i,len(li)-1): #循环无序区
- if li[min_loc]>li[j]: #如过不是最小值,就换下标
- min_loc=j
- if min_loc!=i: #如果下标不是原来的值,就互换
- li[i],li[min_loc]=li[min_loc],li[i]
基本思想:将列表分为有序区和无序区两个部分,最初有序区只有一个元素,.每次从无序区选择一个元素,插入到无序区的位置,直到无序区变空.
- # 插入排序
- def insert_sort(li):
- for i in range(1, len(li)): #走趟,从第一个数开始
- tmp = li[i] #tmp为无序区手中拿的那张牌
- j = i - 1 #j 为有序区的右侧第一张牌
- while j >= 0 and tmp < li[j]:
- print(li)
- #当 有序区至少一张牌,且有序区右侧第一张牌大于需要插入的牌时
- li[j + 1] = li[j] #有序区右侧第一张牌继续向右移位,
- j = j - 1 #有序区向右移一位,继续让手牌去比较
- li[j + 1] = tmp #当手牌不比左边的牌大了,将手牌插入
python 几个简单算法详解
把他 color 无序 def 就是 基本 tro 找到 第一个
原文:http://www.cnblogs.com/fengshuihuan/p/7786659.html
来源: http://www.bubuko.com/infodetail-2381179.html