python_基础算法,,一、二分查找 1 d


一、二分查找

 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]=temp10 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 -=112         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 += 116         list_sort[right_flag] = list_sort[left_flag]17 18     list_sort[left_flag] = start_index19     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_基础算法

评论关闭