a.冒泡排序算法
def bubble_sort(alist):
for i in range(len(alist)-1,0,-1):
for j in range(i):
if alist[j]>alist[j+1]:
alist[j],alist[j+1]=alist[j+1],alsit[j]
return alist
复制代码
b.快速排序bash
def quick_sort(alist):
if len(alist) >=2:
mid = alist[len(alist)//2]
left,right = [],[]
alist.remove(mid)
for num in alist:
if mid > num:
left.append(num)
else:
right.append(num)
return quick_sort(left)+[mid]+quick_sort(right)
else:
return alist
复制代码
c.选择排序app
def selection_sort(alist):
for i in range(len(alist)-1):
min_index = i
for j in range(i+1,len(alist)):
if alist[min_index] > alist[j]:
min_index = j
if min_index != i:
alist[min_index],alist[i] = alist[i],alist[min_index]
return alist
复制代码
d.插入排序post
def insert_sort(alist):
for i in range(1,len(alist)):
for j in range(i,0,-1):
alist[j],alist[j-1]=alist[j-1],alist[j]
return alist
复制代码
排序算法讲解:juejin.im/post/5c19a1…ui
def binary_search(alist,num):
if len(alist) > 1:
mid = len(alist)//2
if alist[mid] == num:
return True
elif alist[mid] > num:
return binary_search(alist[:mid],num)
else:
return binary_search(alist[mid+1:],num)
else:
return False
复制代码
a.队列的实现spa
class Queue(object):
'''队列'''
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def push(self,item):
self.items.insert(0,item)
def pop(self):
return self.items.pop()
def size(self):
return len(self.items)
def clear(self):
'''清空队列'''
del self.items
复制代码
b.栈的实现code
class Stack(object):
'''栈'''
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def push(self,item):
self.items.append(item)
def pop(self):
return self.items.pop()
def size(self):
return len(self.items)
def clear(self):
'''状况栈'''
del self.items
复制代码
c.两个队列实现一个栈排序
队列a为进栈队列,若是队列a中只有一个元素直接返回,队列a中有多个元素,循环遍历,将其余元素放到队列b中,直到队列a中只有一个元素,返回,交换队列a,b,以便下次获取队列
class TwoQueueToStack(object):
'''两个队列实现一个栈'''
def __init__(self):
self.queue_a = Queue()
self.queue_b = Queue()
def push(self,item):
self.queue_a.put(item)
def pop(self):
while self.queue_a.qsize() > 1:
self.queue_b.put(self.queue_a.get())
if self.queue_a.qsize() == 1:
res = self.queue_a.get()
self.queue_a,self.queue_b = self.queue_b,self.queue_a
return res
复制代码
d.一个队列实现一个栈rem
# 一个队列实现一个栈
class OneQueueToStack(object):
def __init__(self):
self.queue = Queue()
def push(self,item):
self.queue.put(item)
def pop(self):
count = self.queue.qsize()
if count == 0:
return False
while count > 1:
x = self.queue.get()
self.queue.put(x)
count -= 1
return self.queue.get()
复制代码