python_基础算法

一、二分查找

 1 def binary(binary_para, search):
 2     bi = int(len(binary_para)/2)
 3     if search == binary_para[0]:
 4         print('数存在,并存在在列表第一位')
 5     elif len(binary_para)>1:
 6         if binary_para[bi] > search:
 7             print('分段值(前):',binary_para[bi])
 8             binary(binary_para[:bi],search)
 9         elif binary_para[bi] < search:
10             print('分段值(后):',binary_para[bi])
11             binary(binary_para[bi:],search)
12         else:
13             print('你寻找的数存在列表里')
14     else:
15         print('列表里不存在你寻找的数')
16 
17 if __name__ == '__main__':
18     li = list(range(8,30000,10))
19     binary(li, 12138)

二、冒泡排序

 1 def bub_sort(sort_list):
 2     for i in range(len(sort_list)-2):
 3         for j in range(len(sort_list)-i-1):
 4             if sort_list[j]>sort_list[j+1]:
 5                 temp = sort_list[j+1]
 6                 sort_list[j+1] = sort_list[j]
 7                 sort_list[j] = temp
 8 
 9 
10 if __name__ == '__main__':
11     li = [65, 1, 45, 77, 3, 9, 43, 23, 7, 53, 213, 10]
12     bub_sort(li)
13     print(li)

三、选择排序

 1 def select_sort(list_sort):
 2     for i in range(len(list_sort)):
 3         min_index = i
 4         for j in range(i, len(list_sort)):
 5             if list_sort[min_index] > list_sort[j]:
 6                 min_index = j
 7         temp = list_sort[i]
 8         list_sort[i] = list_sort[min_index]
 9         list_sort[min_index]=temp
10 
11 if __name__ == '__main__':
12     li = [65, 1, 45, 77, 3, 9, 43, 23, 7, 53, 213, 10]
13     select_sort(li)
14     print(li)

四、插入排序

 1 def insert_sort(sort_list):
 2     for i in range(1,len(sort_list)):
 3         insert_index = i    # 索引当做类似指针的使用
 4         insert_value = sort_list[i]    # 把要插入的值存下来,以免后面被覆盖
 5         while insert_index > 0 and insert_value < sort_list[insert_index-1]:
 6             sort_list[insert_index] = sort_list[insert_index-1]
 7             insert_index -=1
 8         sort_list[insert_index] = insert_value
 9 
10 if __name__ == '__main__':
11     li = [65, 1, 45, 77, 3, 9, 43, 23, 7, 53, 213, 10]
12     insert_sort(li)
13     print(li)
14     

五、快速排序

图片来源:https://www.jianshu.com/p/5f38dd54b11f

 

 1 def quick_sort(list_sort,start,end):
 2     if start >= end:
 3         return
 4     start_index = list_sort[start]
 5     left_flag = start
 6     right_flag = end
 7 
 8     while left_flag < right_flag:
 9 
10         while left_flag < right_flag and start_index <= list_sort[right_flag]:
11             right_flag -=1
12         list_sort[left_flag] = list_sort[right_flag]
13 
14         while left_flag < right_flag and start_index >= list_sort[left_flag]:
15             left_flag += 1
16         list_sort[right_flag] = list_sort[left_flag]
17 
18     list_sort[left_flag] = start_index
19     quick(list_sort, start, end, left_flag)     # 递归调用
20 
21 def quick(list_sort,start,end,left_flag):
22     quick_sort(list_sort,start,left_flag-1)
23     quick_sort(list_sort,left_flag+1,end)
24 
25 if __name__ == '__main__':
26     li = [64, 77, 67, 8, 6, 84, 55, 20, 43, 67, 67]
27     quick_sort(li, 0, len(li) - 1)
28     print(li)

 

转载于:https://www.cnblogs.com/Vera-y/p/11506276.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值