Python中简单算法(冒泡排序、选择排序、查找(顺序、二分法))

1.冒泡排序:

 比较两个不相邻下标所对应的元素,如果符合条件则交换位置

升序:长度为n的列表中进行元素排列,第一次找到最大值,固定位置n的值;第二次找到第二大值,固定位置n-1处的值,知道所有的值都被固定,则排序完成

#冒泡排序(升序)
list1 = [43,545,4,124,34,323,54]
for i in range(0,len(list1) - 1):            #需要走几次循环
    for j in range(0,len(list1) - 1 - i):
        if list1[j] > list1[j + 1]:
            list1[j],list1[j + 1] = list1[j + 1],list1[j]   #交换两个值
print(list1)

 

2.选择排序:

 固定一个下标,然后使用这个下标对应的元素和列表中其他元素进行一次对比,如果符合条件则交换位置

升序:长度为n的列表中进行元素排列,第一次找到最小值,固定位置0的值;第二次找到第二小值,固定位置1处的值,知道所有的值都被固定,则排序完成

#选择排序(升序)
list1 = [43,545,4,124,34,323,54]
for i in range(len(list1) - 1):            #从0位置开始固定元素,外层控制轮数
    for j in range(i + 1,len(list1)):      #最小值在左边,一轮固定一次,直到所有都固定完成,控制每轮比较次数
        if list1[i] > list1[j]:
            list1[i],list1[j] = list1[j],list1[i]
print(list1)

 

3.查找: 

(1)顺序查找:

遍历指定列表,依次将要查找的数据和列表中的元素进行依次对比,如果相等,则输出索引

#顺序查找
list1 = [43,545,4,124,34,323,54]
keyword = 124
index = 0
#遍历列表
for i in range(len(list1)):
    if keyword == list1[i]:
        index = i
        print(index)

(2)二分法查找:

前提条件,必须是排好序的列表【局限性】;通过折半来缩小查找范围,提高查找效率

#二分查找[前提序列已经排序好,升序]
list1 = [23,43,45,67,88,90,100]
#待查找的数据
key = 43
#定义变量用于记录下标
left = 0
right = len(list1) - 1
#left和right在不断调整,当left和right相等时,说明这个列表被查找了一遍
#循环每执行一次,middle就变换一次
while left <= right:
    middle = (left + right) // 2
    if key > list1[middle]:
        left = middle + 1
    elif key < list1[middle]:
        right = middle - 1
    else:
        print("元素下标为:",middle)
        #当left<right时,已经查找到了元素,此时强制停止循环
        break

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值