欢迎访问宙启技术站
智能推送

Python函数实现常用算法:二分查找、冒泡排序

发布时间:2023-07-03 13:45:40

二分查找是一种常见的查找算法,它能在有序数组中快速查找指定元素。下面是Python函数实现二分查找的示例代码:

def binary_search(arr, target):
    low = 0
    high = len(arr) - 1

    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1

    return -1

在这个函数中,我们首先初始化low和high变量为数组的 个和最后一个元素的索引。然后,我们使用一个while循环,直到low大于high为止,不断地将搜索范围缩小。在每次循环迭代中,我们将中间元素的索引计算为(low + high) // 2,并比较该元素与目标元素的大小。如果二者相等,我们就找到了目标元素,返回它的索引值。如果中间元素比目标元素小,说明目标元素在右半部分,将low向右移动一格。反之,如果中间元素比目标元素大,说明目标元素在左半部分,将high向左移动一格。当循环结束时,说明没有找到目标元素,返回-1。

冒泡排序是一种简单但效率较低的排序算法,它重复地比较相邻的两个元素,如果它们的顺序不正确就交换它们,直到没有需要交换的元素为止。下面是Python函数实现冒泡排序的示例代码:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n - 1):
        for j in range(n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]

在这个函数中,我们首先获取数组的长度,并使用两个嵌套的循环进行遍历。外部循环控制排序的轮数,每一轮都会将本轮最大的元素冒泡到数组的最右边。内部循环用于比较相邻元素的大小,并交换它们的位置,将较大的元素往后移。通过重复进行这样的冒泡操作,最终将最大的元素不断地冒泡到正确的位置,实现了整个数组的排序。

这是Python函数实现二分查找和冒泡排序的代码示例。二分查找算法能够在有序数组中快速查找指定元素,而冒泡排序算法则能对数组进行简单但效率较低的排序。通过实现这些常用的算法,我们能够加深对算法的理解,并将其应用在实际的问题中。