Python---排序/二分查找

文章目录


一.冒泡排序

冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻的两个元素,如果顺序不正确就交换它们。通过多次遍历,将最大或最小的元素逐步“冒泡”到列表的一端,最终实现整个列表的排序。

演示案例:每次外循环确定最值放在末尾,每次内循环进行两两之间比较大小

def Bubble_Sort(ls):
    #每次外循环确定最小者置于末尾
    for i in range(1,len(ls)):
        #内循环控制哪两个数之间比较
        for j in range(0, len(ls)-1):
            #两两比较,若满足条件
            if ls[j] < ls[j+1]:
                #两者交换位置,较小者右移
                ls[j+1],ls[j] = ls[j],ls[j+1]
#调用冒泡排序函数
ls = [44,56,65,34,1]
Bubble_Sort(ls)
print("冒泡排序后的顺序是:",ls)

 二.选择排序

 选择排序是一种简单的排序算法,它的基本思想是首位元素与剩余元素比较,小于/大于首位元素则与首位元素交换位置,每一次从待排序的序列中选择最值元素,放到已排序序列的末尾,直到整个序列排序完成。

演示案例:每次外循环确定最值置于末尾,内循环首位元素与其余元素比较

def Selection_Sort(ls):
    #每次外循环确定最小者置于末尾
    for i in range(1,len(ls)):
        #内循环控制与首位元素比较的元素
        for j in range(i, len(ls)):
            #若首位元素<比较元素
            if ls[i-1] < ls[j]:
                #两者交换位置,较小者右移
                ls[j],ls[i-1] = ls[i-1],ls[j]
#调用冒泡排序函数
ls = [44,56,65,34,1]
Selection_Sort(ls)
print("选择排序后的顺序是:",ls)


总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这是一个关于排序二分查找的问题。 首先,我们需要对待查找的数据进行排序,这里就采用一种简单的排序算法——冒泡排序。冒泡排序的基本思想是:从第一个元素开始,比较相邻的两个元素大小,如果前一个元素大于后一个元素,则交换它们的位置,依次比较下去,直到最后一个元素。 接下来,我们可以用二分查找来查找指定的元素。二分查找的基本思想是:将待查找的区间分成两个部分,取中间位置的元素与目标元素进行比较,如果相等,则找到了目标元素;如果目标元素大于中间元素,则在后半部分继续查找;如果目标元素小于中间元素,则在前半部分继续查找。 下面是示例代码: ```python def bubble_sort(arr): n = len(arr) for i in range(n): for j in range(0, n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] def binary_search(arr, left, right, target): if left > right: return -1 mid = (left + right) // 2 if arr[mid] == target: return mid elif arr[mid] < target: return binary_search(arr, mid+1, right, target) else: return binary_search(arr, left, mid-1, target) # 测试代码 arr = [5, 2, 8, 3, 9, 1] bubble_sort(arr) print(arr) print(binary_search(arr, 0, len(arr)-1, 3)) ``` 输出结果: ``` [1, 2, 3, 5, 8, 9] 2 ``` 在这个示例代码中,我们先用冒泡排序将待查找的数组进行了排序,然后调用二分查找函数查找目标元素 3,最终返回了它的索引位置 2。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北 染 星 辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值