快速排序12345678defquick_sort(_list):iflen(_list) 2:return_listpivot_index0pivot_list(pivot_index)left_list[iforiin_list[:pivot_index]ifi pivot]right_list[iforiin_list[pivot_index:]ifi pivot]returnquick_sort(left)[pivot]quick_sort(right)选择排序123456789defselect_sort(seq):nlen(seq)foriinrange(n-1)min_idxiforjinrange(i1,n):ifseq[j] seq[min_inx]:min_idxjifmin_idx !i:seq[i], seq[min_idx]seq[min_idx],seq[i]插入排序12345678910definsertion_sort(_list):nlen(_list)foriinrange(1,n):value_list[i]posiwhilepos 0andvalue _list[pos-1]_list[pos]_list[pos-1]pos-1_list[pos]valueprint(sql)归并排序12345678910111213141516171819202122232425defmerge_sorted_list(_list1,_list2):#合并有序列表len_a, len_blen(_list1),len(_list2)ab0sort[]whilelen_a aandlen_b b:if_list1[a] _list2[b]:sort.append(_list2[b])b1else:sort.append(_list1[a])a1iflen_a a:sort.append(_list1[a:])iflen_b b:sort.append(_list2[b:])returnsortdefmerge_sort(_list):iflen(list1)2:returnlist1else:midint(len(list1)/2)leftmergesort(list1[:mid])rightmergesort(list1[mid:])returnmerge_sorted_list(left,right)堆排序heapq模块123fromheapqimportnsmallestdefheap_sort(_list):returnnsmallest(len(_list),_list)栈123456789101112from collections import dequeclass Stack:def __init__(self):self.s deque()def peek(self):p self.pop()self.push(p)returnpdef push(self, el):self.s.append(el)def pop(self):returnself.pop()队列12345678from collections import dequeclass Queue:def __init__(self):self.s deque()def push(self, el):self.s.append(el)def pop(self):returnself.popleft()二分查找12345678910def binary_search(_list,num):mid len(_list)//2iflen(_list) 1:returnFlaseifnum _list[mid]:BinarySearch(_list[mid:],num)elif num _list[mid]:BinarySearch(_list[:mid],num)else:return_list.index(num)到此这篇关于用python实现各种数据结构的文章就介绍到这了,