python 快排,冒泡,二分

本文深入探讨了快速排序、冒泡排序及二分搜索算法的实现与原理,通过Python代码详细展示了每种算法的工作流程,是理解算法设计与分析的基础资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#算法
'''
快排
先从数列中取出一个数作为基准,然后将比概数打的数放到右边,比该书小的放到左边;再对左右区间重复上衣步骤

'''

def qsort(seq):
    if seq==[]:
        return []
    else:
        pivot=seq[0]
        lesser=qsort([x for x in seq[1:] if x<pivot])
        greater=qsort([x for x in seq[1:] if x>=pivot])
        return lesser+[pivot]+greater
if __name__=='__main__':
    seq=[5,6,78,9,0,-1,2,3,-65,12]
    print(qsort(seq))
#冒泡
'''
比较两个相邻的元素,然后进行排序,但是效率非常低,始终保持第一个为最小的
'''
def bubblesort(nums):
    for i in range(len(nums)-1):
        for j in range(len(nums)-i-1):
            if nums[j]>nums[j+1]:
                nums[j],nums[j+1] = nums[j+1],nums[j]
    return nums
seq=[5,6,78,9,0,-1,2,3,-65,12]
print(bubblesort(seq))
'''
二分法算法原理:数组是有序数组,
确定该期间的中间位置center将查找的值key与array[center]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。
新区域的确定:如果key>arrey[center],则起始位置变为center+1,结束位置不变
如果key<arrey[center],则结束位置变为center-1,起始位置不变
每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间缩小一半。递归找,即可。
'''
def binarysearch(arr,key):
    start=0
    end=len(arr)-1     #最后一个元素的索引
    if key in arr:
        while True:
            center=int((start+end)/2) #(第一个索引+最后一个索引)/2
            if arr[center]>key:
                end=center-1
            elif arr[center]<key:
                start=center+1
            elif arr[center]==key:
                print(str(key)+'在数组里面的第'+str(center)+' 个位置')
                return arr[center]
    else:
        print('没有该数字')

if __name__=='__main__':
    arr=[1,2,9,12,14,16,18,23,34,56,78]
    while True:
        key=input('请输入要查找的数字:')
        if key=='':
            print('谢谢使用')
            break
        else:
            binarysearch(arr,int(key))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值