python的一些排序算法

冒泡排序: 
 1 #coding:utf-8
 2 '''
 3 比较相邻的元素,每一趟交换后,最后的元素是最大的。
 4 第一次比较n-1次,第二次比较n-2次。。。第n-1次比较1次
 5 进行n-1次冒泡次数
 6 最优时间复杂度O(n),最坏时间复杂度O(n^2)
 7 '''
 8 
 9 def bubble_sort(b_list):
10     n = len(b_list)
11     for j in range(0, n-1):
12         count = 0
13         for i in range(0, n-1-j):
14             if b_list[i] > b_list[i+1]:
15                 count += 1
16                 t = b_list[i+1]
17                 b_list[i+1] = b_list[i]
18                 b_list[i] = t
19         if count == 0:
20             break

 

 

简单选择排序
 1 #coding:utf-8
 2 '''
 3 找到最小的放到最前面,接着从剩余的继续找最小的,放到第二个。
 4 一共找n-1次,最优O(n),最坏O(n^2)
 5 '''
 6 
 7 def select_sort(s_list):
 8     n = len(s_list)
 9     for j in range(0, n-1):
10         min_v = j
11         for i in range(j+1, n):
12             if s_list[i] < s_list[min_v]:
13                 min_v = i
14         t = s_list[j]
15         s_list[j] = s_list[min_v]
16         s_list[min_v] = t

 

 
插入排序
 1 #coding:utf-8
 2 '''
 3 从第二个开始 和前面的有序序列比较,比较大小插进去
 4 最优O(n),最坏O(n^2)
 5 '''
 6 
 7 def insert_sort(i_list):
 8     n = len(i_list)
 9     for j in range(1, n):
10         i = j
11         while i > 0:
12             if i_list[i] < i_list[i-1]:
13                 t = i_list[i]
14                 i_list[i] = i_list[i-1]
15                 i_list[i-1] = t
16                 i = i - 1
17             else:
18                 break

 

 

 

posted @ 2019-02-17 21:33  执手凝噎  阅读(122)  评论(0)    收藏  举报