栈
有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素。它的特点在于只能允许容器的一端进行加入数据和输出数据的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。
队列
队列是指允许在一端进行插入,而在另一端进行删除操作的线性表。
队列是一种先进先出的线性表。允许插入的一端为队尾,允许删除的一端为对头。队列不允许在中间部位进行操作!
栈结构实现
栈可以用顺序表实现,也可以用链表实现
class Stack(object):
"""栈"""
def __init__(self):
self.__list = []
def push(self,item):
""""添加一个新的元素item到栈顶"""
return self.__list.append(item)
print(item)
def pop(self):
#弹出栈顶元素
return self.__list.pop()
def peek(self):
#返回栈顶元素
if self.__list:
return self.__list[-1]
else:
return None
def is_empty(self):
"""判断是否为空"""
return self.__list==[]
def size(self):
"""返回栈的元素个数"""
return len(self.__list)
if __name__=='__main__':
s = Stack()
s.push(1)
s.push(23)
s.push(4)
print(s)
排序
排序算法是一种能将一串数据按照特定顺序进行排列的一种算法。
稳定性:稳定排序算法会让原本有相等键值的记录维持相对次序。不稳定算法可能会在相等的键值中改变记录的相对次序。
冒泡排序
def bubble_sort(alist):
"""冒泡排序"""
n=len(alist)
for j in range(n-1):
for i in range(n-1-j):
if alist[i]>alist[i+1]:
alist[i],alist[i+1] =alist[i+1],alist[i]
选择排序
def select_sort(alist):
"""选择排序"""
n=len(alist)
for j in range(n-1):
min_index = j
for i in range(j+1,n):
if alist[min_index]>alist[i]:
min_index=i
alist[j],alist[min_index]=alist[min_index],alist[j]
插入排序
def insert_sort(alist):
# 从第二个位置,即下标为1的元素开始向前插入
for i in range(1, len(alist)):
# 从第i个元素开始向前比较,如果小于前一个元素,交换位置
for j in range(i, 0, -1):
if alist[j] < alist[j-1]:
alist[j], alist[j-1] = alist[j-1], alist[j]
alist = [54,26,93,17,77,31,44,55,20]
insert_sort(alist)
print(alist)