python_基础算法

Posted vera-y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

 

以上是关于python_基础算法的主要内容,如果未能解决你的问题,请参考以下文章

python_基础算法

Python基础13_类与类型, MRO, C3算法, super()

python 复习——网络编程——面向对象多继承(c3算法)网络基础和编写网络相关的程序

『Python进阶』专题汇总

python基础学习日志day5--hashlib模块

python基础算法