当前位置: 首页 > 后端技术 > Python

如何在python中实现各种数据结构

时间:2023-03-26 19:15:23 Python

大家好,我来分享下如何用python实现各种数据结构~快速排序defquick_sort(_list):iflen(_list)<2:return_listpivot_index=0pivot=_list(pivot_index)left_list=[iforiin_list[:pivot_index]ifipivot]returnquick_sort(left)+[pivot]+quick_sort(right)选择排序defselect_sort(seq):n=len(seq)foriinrange(n-1)min_idx=iforjinrange(i+1,n):ifseq[j]0andvalue<_list[pos-1]_list[pos]=_list[pos-1]pos-=1_list[pos]=valueprint(sql)合并??排序defmerge_sorted_list(_list1,_list2):#合并有序列表len_a,len_b=len(_list1),len(_list2)a=b=0sort=[]whilelen_a>aandlen_b>b:if_list1[a]>_list2[b]:sort.append(_list2[b])b+=1else:sort.append(_list1[a])a+=1如果len_a>a:sort.append(_list1[a:])如果len_b>b:sort.append(_list2[b:])返回sortdefmerge_sort(_list):如果len(list1)<2:返回list1否则:mid=int(len(list1)/2)left=mergesort(list1[:mid])right=mergesort(list1[mid:])returnmerge_sorted_list(left,right)堆排序heapq模块fromheapqimportnsmallestdefheap_sort(_list):returnnsmallest(len(_list),_list)stackfromcollectionsimportdequeclassStack:def__init__(self):self.s=deque()defpeek(self):p=self.pop()self.push(p)returnpdefpush(self,el):self.s.append(el)defpop(self):returnself.pop()队列fromcollectionsimportdequeclass队列:def__init__(self):self.s=deque()defpush(self,el):self.s.append(el)defpop(self):returnself.popleft()二进制搜索defbinary_search(_list,num):mid=len(_list)//2iflen(_list)<1:returnFlaseifnum>_list[mid]:BinarySearch(_list[mid:],num)elifnum<_list[mid]:BinarySearch(_list[:mid],num)else:return_list.index(num)以上,我的分享就到这里了。喜欢的朋友可以点赞关注哦~