排序算法(Sorting algorithm)是一种能将一串数据依照特定顺序进行排列的一种算法。

常用排序算法:

1
2
3
4
5
6
7
冒泡排序(*****)
选择排序(*****)
插入排序
快速排序
希尔排序
归并排序
堆排序

搜索是在一个项目集合中找到一个特定项目的算法过程。

常用搜索算法:

1
2
3
4
顺序查找
二分法查找(*****)
二叉树查找
哈希查找

快速排序

快速排序(quick sort)的采用了分治的策略。
分治策略:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#快速排序
def quick_func(list):
#判断列表长度是一位的话,直接返回,不需要排序
if len(list) < 2:
return list
#基准值,也就是随机变量, 从列表中随机选取一个元素
tmp = list[0]
left = [x for x in list[1:] if x <= tmp]#小于等于基准值的元素组成的数组
print(left)
right = [x for x in list[1:] if x > tmp]#大于基准值的元素组成的数组
# print(right)
return quick_func(left) + [tmp] + quick_func(right) #调用本身,递归


li = [2,4,6,3,8,1,5]
print(quick_func(li))

#参考结果:
# 随机 2 #第一次取出基准值
# 左 [1]
# 右 [4, 6, 3, 8, 5]
# 随机 4 #第二次取出基准值
# 左 [3]
# 右 [6, 8, 5]
# 随机 6 #第三次取出基准值
# 左 [5]
# 右 [8]
# [1, 2, 3, 4, 5, 6, 8]

冒泡排序

冒泡排序(Bubble Sort)也是一种简单直观的排序算法。
冒泡排序就是遍历数据,每次只与下一个数字比较,如果这两个数顺序不对,则与交换过来。
就上面那个问题来说,因为要升序排列,所以数字越大越排在后面。则两个数比较的时候,如果后一个数比当前数小,则顺序不对,要将这两个数交换。

1
2
3
4
5
6
7
8
9
10
11
12
#冒泡排序
def bubble_sort(li):
cli = len(li)
for i in range(cli):#遍历所有数组
for j in range(cli-i-1):#
if li[j] > li[j+1]: #比较相邻两个元素,判断大小交换位置
li[j],li[j+1]=li[j+1],li[j]

li = [1,5,2,6,3,7,4,8,9,0]
bubble_sort(li)
print(li)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

评论





载入天数...载入时分秒...

Blog content follows the Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) License

Use WZH as theme, total visits times