随笔分类 - 算法与数据结构
摘要:二分查找——递归版: def binarySearch(aimlist, item): # 获取列表的长度 n = len(aimlist) # 如果列表非空 if n > 0: # 计算中间索引 mid = n // 2 # 如果中间元素是目标元素,则找到了 if aimlist[mid] ==
阅读全文
摘要:归并排序: def merge_sort(aimlist): #归并排序 拆分-排序-合并 也就是merge_返回的是是一个已经排好序的列表 n=len(aimlist) if n<=1: return aimlist mid=n//2 aimlist_left=merge_sort(aimlist
阅读全文
摘要:插入排序 def insrt_sort(aimlist): n=len(aimlist) for cur in range(1,n): i=cur while i>0: if aimlist[i]<aimlist[i-1]: aimlist[i],aimlist[i-1]=aimlist[i-1],
阅读全文
摘要:冒泡排序: def bible_sort(aimlist): n=len(aimlist) j=len(aimlist) while j>0: for i in range(n-1): if aimlist[i]>aimlist[i+1]: aimlist[i],aimlist[i+1]=aimli
阅读全文
摘要:栈的实现: class Stack(object): def __init__(self): self.__list=[] def push(self,item): self.__list.append(item) def pop(self): return self.__list.pop() de
阅读全文
摘要:二叉树 class Node(object): def __init__(self,val,lchild=None,rchild=None): self.val=val self.lchild=lchild self.rchild=rchild class Tree(object): def __i
阅读全文
摘要:单循环链表 class ListNode: def __init__(self,val,next=None): self.val=val self.next=next class SingleLoopLinkList: def __init__(self,node=None): self.__hea
阅读全文
摘要:双链表 class ListNode: def __init__(self,val,prev=None,next=None): self.val=val self.prev=prev self.next=next class DoubleLinkList: def __init__(self,nod
阅读全文
摘要:class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class SingleLinkList: def __init__(self,node=None): self.__head=
阅读全文