数据结构和算法
bo.qiu_xbw
Talking is cheap ,show me the code.
展开
-
手写NMS
def NMS(dects,threshhold): """ detcs:二维数组(n_samples,5) 5列:x1,y1,x2,y2,score threshhold: IOU阈值 """ x1=dects[:,0] y1=dects[:,1] x2=dects[:,2] y2=dects[:,3] score=dects[:,4] ndects=dects.shape[0]#box的数量 area=(x2原创 2020-08-12 17:50:00 · 496 阅读 · 0 评论 -
前中后序遍历(非递归) python
树通常都要用stack辅助栈。思路:左边的树节点先进栈,每次输出最后一个节点,在寻找右边的节点(中间的节点就是上一层的左节点)。中序遍历:左中右res=[]tmp=[]cur=rootwhile cur or tmp: if cur: tmp.append(cur) cur=cur.left else: cur=tmp.pop() res.append(cur.va...原创 2020-02-13 19:43:40 · 689 阅读 · 0 评论 -
堆排序 python
堆排序要经过两个步骤:1.建造一个堆2.进行堆排序大根堆:根比左右子树的值都大(和二叉搜索树不一样)代码解释一下:首先要建造堆,找到最大的数放在根部,max_heap(arr,n,largest)主要就是递归,对子树进行调整。随后到build_heap方法,主要就是先从底部到根部构建堆,在把根部最大的换到底部,再把根部以下的构建堆,进行递归。难点在于:两个递归容易忘记# -*- c...原创 2020-02-12 12:27:03 · 147 阅读 · 0 评论 -
树的最大深度 python
假设树的节点类和其他类都已经设好了,简写方法1.(递归)def Max_depth(self): left_max=Max_depth(self.root.lchild) right_max=Max_depth(self.root.rchild) return max(right_max,left_max)+1...原创 2020-02-03 11:14:54 · 328 阅读 · 0 评论 -
单链表反转single_link_list_reversed(python)
#coding=utf-8class Node(object): #节点 def __init__(self,elem): self.next=None self.elem=elemclass SingleListLink(object): """单链表反转""" def __init__(self,node=None): ...原创 2020-02-02 20:12:49 · 132 阅读 · 0 评论 -
树_Tree (python)
class Node(object): def __init__(self,item): self.elem=item self.lchild=None self.rchild=Noneclass Tree(object): """二叉树""" def __init__(self): self.root=N...原创 2020-01-31 10:35:33 · 165 阅读 · 0 评论 -
二分查找 (python)
#coding=utf-8'''二分查找又称折半查找优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步...转载 2020-01-31 10:34:56 · 136 阅读 · 0 评论 -
归并排序_merge (python)
def merge_sort(a): n=len(a) if n<=1: return a mid=n//2 left=merge_sort(a[:mid]) right=merge_sort(a[mid:]) left_point,right_point=0 result=[] while left...原创 2020-01-31 10:34:16 · 148 阅读 · 0 评论 -
快速排序_Qiuck (python)
def quick_sort(a,first,last): if first>=last: return low=first high=last middle_value=a[0] n=len(a) while low<high: while low<high and middle_value<...原创 2020-01-31 10:33:39 · 143 阅读 · 0 评论 -
希尔排序_shell (python)
def shell_sort(a): n=len(a) gap=n//2 while gap>=1: for i in range(gap,n): j=i while j>0: if a[j]<a[j-gap]: a[j]...原创 2020-01-31 10:32:54 · 117 阅读 · 0 评论 -
插入排序_insert (python)
def insert_sort(a): """插入排序""" n=len(a) for i in range(1,n): for j in range(i,0,-1): if a[j]<a[j-1]: a[j-1],a[j]=a[j],a[j-1]#第二种写法for i in range(1...原创 2020-01-31 10:32:08 · 235 阅读 · 0 评论 -
选择排序_selected (python)
def select_sort(a): '''选择排序''' n=len(a) for i in range(n-1): min_index=i for j in range(i+1,n): if a[min_index]>a[j]: min_index=j a[...原创 2020-01-31 10:23:09 · 344 阅读 · 1 评论 -
冒泡排序_bubble (python)
#coding=utf-8def bubble_sort(alist): """冒泡排序""" n=len(alist) for i in range(n-1): count=0 for j in range(n-j-1): if alist[j]>alist[j+1]: al...原创 2020-01-31 10:18:58 · 152 阅读 · 0 评论 -
双端队列 dequeue(python)
#coding=utf-8class Deque(object): """双端队列""" def __init__(self): self.__list = [] def add_front(self, item): """往队列中添加一个item元素""" self.__list.insert(0, ite...原创 2020-01-31 10:17:30 · 1115 阅读 · 0 评论 -
队列 Queue(python)
#coding=utf-8class Queue(object): """队列""" def __init__(self): self.__list=[] def enqueue(self,item): """往队列中添加一个item元素""" self.__list.append(item) def d...原创 2020-01-31 10:16:52 · 96 阅读 · 0 评论 -
栈 stack(python)
#coding=utf-8class Stack(object): """栈""" def __init__(self): self.__list=[] def push(self,item): """添加一个新的元素item到栈顶""" self.__list.append(item) def pop(s...原创 2020-01-31 10:15:42 · 75 阅读 · 0 评论 -
单项循环链表single_cycle_link_list(python)
#coding=utf-8class Node(object): #节点 def __init__(self.elem): self.next=None self.elem=elemclass SingleListLink(object): """单项单链表""" def __init__(self,node=None): ...原创 2020-01-31 10:15:02 · 194 阅读 · 0 评论 -
双链表double-link-list(python)
#coding=utf-8class Node(object): #节点 def __init__(self.elem): self.next=None self.pre=None self.elem=elemclass SingleListLink(object): """双链表""" def __init_...原创 2020-01-31 10:12:44 · 296 阅读 · 0 评论 -
单链表single_link_list(python)
#coding=utf-8class Node(object): #节点 def __init__(self,elem): self.next=None self.elem=elemclass SingleListLink(object): """单链表""" def __init__(self,node=None): ...原创 2020-01-31 10:11:26 · 391 阅读 · 0 评论