2020.10.28/栈,队列,冒泡排序,选择排序,二分查找

28 篇文章 0 订阅

栈

#栈  先进后出
class Stack():
    def __init__(self):    #初始化一个空列表(就是一个栈)
        self.list = []
    def is_empty(self):    #判断栈是否为空
        return self.list == []
    def push(self, data):        #在栈顶添加元素"""
        self.list.append(data)
    def pop(self):        #弹出顶部元素"""
        return self.list.pop()
    def peek(self):        #返回栈顶元素"""
        # 先判断是否为空
        if self.is_empty():
            return
        else:
            return self.list[-1]
    def size(self):       #判断长度"""
        return len(self.list)
    def travel(self):       #遍历所有元素"""
        if self.list != []:
            for i in self.list:
                print(i)
        else:
            print([])

冒泡排序

冒泡排序

#冒泡排序
def bubbleSort(arr):
    n = len(arr)
    # 遍历所有数组元素
    for i in range(n):
        for j in range(0, n - i - 1):   #n-i-1 因为前面已经交换一次了 所以前面那个不用再交换了
            if arr[j] > arr[j + 1]:     #如果左面的比右面的大 就换位置
                arr[j], arr[j + 1] = arr[j + 1], arr[j]

arr = [64, 34, 25, 12, 22, 11, 90]
bubbleSort(arr)
print("排序后的数组:")
print(arr)

队列

队列

class Queue:
    def __init__(self):
        self.list = []
    def enqueue(self, data):
        """往队列头中添加一个新元素"""
        self.list.insert(0, data)
    def travel(self):
        """遍历所有元素"""
        if list != []:
            for i in self.list:
                print(i)
        else:
            print('没了')
    def dequeue(self):
        """从队列尾删除一个元素"""
        self.list.pop()
    def is_empty(self):
        """判断队列是否为空"""
        return self.list == []
    def size(self):
        """返回队列的元素个数"""
        return len(self.list)

选择排序

选择排序

#选择排序
def select_sort(alist):
    n = len(alist)
    # 需要进行n-1次选择操作
    for i in range(n - 1):
        # 记录最小位置
        min_index = i
        # 从i+1位置到末尾选择出最小数据
        for j in range(i + 1, n):
            if alist[j] < alist[min_index]:
                min_index = j
        # 如果选择出的数据不在正确位置,进行交换
        if min_index != i:
            alist[i], alist[min_index] = alist[min_index], alist[i]
alist = [54, 226, 93, 17, 77, 31, 44, 55, 20]
select_sort(alist)
print(alist)

二分查找

在这里插入图片描述

#二分法  折半查找  必要条件,有序列表
lst = [37,99,73,48,47,40,40,25,99,51]

def search(li, item):
    #中间点
    mid = len(li) // 2
    #如果中间点是我们想查找的数据,返回Ture
    if item == li[mid]:
        return True
    #在我们想要查找的数据大于中间点的时候
    elif item > li[mid]:
        #我们去中间点的右面看看  区间就是 中间点右面第一个数据到我们要查找的数据
        return search(li[mid + 1:], item)
    else:
        #如果我们查的数据小于中间点的数据,那我们就去左面看看
        return search(li[:mid], item)

print(search(sorted(lst),37))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值