我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python 中有哪些常用的数组处理算法,它们如何实现?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python 中有哪些常用的数组处理算法,它们如何实现?

Python 是一种功能强大的编程语言,广泛应用于数据分析、科学计算、机器学习等领域。在这些领域中,数组处理算法是非常常见的,因为数组是一种常用的数据结构,用于存储和处理大量的数据。

在本文中,我们将介绍 Python 中常用的数组处理算法,包括排序、查找、去重、合并等,同时也会演示它们的实现过程。

排序算法

排序算法是一种将数组中的元素按照一定的顺序排列的算法。在 Python 中,常用的排序算法有冒泡排序、选择排序、插入排序、归并排序和快速排序等。

冒泡排序

冒泡排序是一种简单的排序算法,它的基本思想是通过相邻元素的比较和交换来把小的元素往前移,大的元素往后移。它的时间复杂度为 O(n^2)。

下面是 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]
    return arr

选择排序

选择排序是一种简单的排序算法,它的基本思想是每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置。然后,再从剩余的未排序元素中继续寻找最小(或最大)的元素,然后放到已排序序列的末尾。它的时间复杂度为 O(n^2)。

下面是 Python 中选择排序的实现代码:

def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        min_index = i
        for j in range(i+1, n):
            if arr[j] < arr[min_index]:
                min_index = j
        arr[i], arr[min_index] = arr[min_index], arr[i]
    return arr

插入排序

插入排序是一种简单的排序算法,它的基本思想是将待排序的元素插入到已排好序的元素中的适当位置,以达到排序的目的。它的时间复杂度为 O(n^2)。

下面是 Python 中插入排序的实现代码:

def insertion_sort(arr):
    n = len(arr)
    for i in range(1, n):
        key = arr[i]
        j = i - 1
        while j >= 0 and arr[j] > key:
            arr[j+1] = arr[j]
            j -= 1
        arr[j+1] = key
    return arr

归并排序

归并排序是一种高效的排序算法,它的基本思想是将待排序的数组分成两个子数组,然后对这两个子数组分别进行排序,最后将排好序的子数组合并成一个有序的数组。它的时间复杂度为 O(nlogn)。

下面是 Python 中归并排序的实现代码:

def merge_sort(arr):
    if len(arr) > 1:
        mid = len(arr) // 2
        left_arr = arr[:mid]
        right_arr = arr[mid:]
        merge_sort(left_arr)
        merge_sort(right_arr)
        i = j = k = 0
        while i < len(left_arr) and j < len(right_arr):
            if left_arr[i] < right_arr[j]:
                arr[k] = left_arr[i]
                i += 1
            else:
                arr[k] = right_arr[j]
                j += 1
            k += 1
        while i < len(left_arr):
            arr[k] = left_arr[i]
            i += 1
            k += 1
        while j < len(right_arr):
            arr[k] = right_arr[j]
            j += 1
            k += 1
    return arr

快速排序

快速排序是一种高效的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字都比另一部分记录的关键字小,然后再分别对这两部分记录继续进行快速排序,以达到整个序列有序的目的。它的时间复杂度为 O(nlogn)。

下面是 Python 中快速排序的实现代码:

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr)//2]
    left_arr = [x for x in arr if x < pivot]
    middle_arr = [x for x in arr if x == pivot]
    right_arr = [x for x in arr if x > pivot]
    return quick_sort(left_arr) + middle_arr + quick_sort(right_arr)

查找算法

查找算法是一种在数组中查找某个元素的算法。在 Python 中,常用的查找算法有线性查找和二分查找。

线性查找

线性查找是一种简单的查找算法,它的基本思想是从数组的第一个元素开始,依次比较每个元素,直到找到目标元素或遍历完整个数组。它的时间复杂度为 O(n)。

下面是 Python 中线性查找的实现代码:

def linear_search(arr, target):
    for i in range(len(arr)):
        if arr[i] == target:
            return i
    return -1

二分查找

二分查找是一种高效的查找算法,它的基本思想是将有序数组分成两半,然后判断目标元素在哪一半,最终找到目标元素。它的时间复杂度为 O(logn)。

下面是 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

去重算法

去重算法是一种将数组中重复元素去除的算法。在 Python 中,常用的去重算法有集合去重和排序去重。

集合去重

集合去重是一种简单的去重算法,它的基本思想是利用 Python 中集合的特性,将数组转化成集合,然后再将集合转化回数组,以达到去重的目的。

下面是 Python 中集合去重的实现代码:

def set_deduplication(arr):
    return list(set(arr))

排序去重

排序去重是一种通过先对数组排序,然后遍历数组去除相邻的重复元素的算法。它的时间复杂度为 O(nlogn)。

下面是 Python 中排序去重的实现代码:

def sort_deduplication(arr):
    arr.sort()
    res = []
    for i in range(len(arr)):
        if i == 0 or arr[i] != arr[i-1]:
            res.append(arr[i])
    return res

合并算法

合并算法是一种将多个数组合并成一个数组的算法。在 Python 中,常用的合并算法有直接合并、排序合并和归并合并。

直接合并

直接合并是一种简单的合并算法,它的基本思想是将多个数组直接合并成一个数组。

下面是 Python 中直接合并的实现代码:

def direct_merge(*args):
    res = []
    for arr in args:
        res += arr
    return res

排序合并

排序合并是一种通过先将多个数组排序,然后将排好序的数组合并成一个数组的算法。它的时间复杂度为 O(nlogn)。

下面是 Python 中排序合并的实现代码:

def sort_merge(*args):
    res = []
    for arr in args:
        res += arr
    res.sort()
    return res

归并合并

归并合并是一种通过先将多个数组排序,然后利用归并排序的思想将排好序的数组合并成一个数组的算法。它的时间复杂度为 O(nlogn)。

下面是 Python 中归并合并的实现代码:

def merge_merge(*args):
    res = []
    for arr in args:
        res += arr
    merge_sort(res)
    return res

总结

本文介绍了 Python 中常用的数组处理算法,包括排序、查找、去重、合并等,同时也演示了它们的实现过程。这些算法是数据分析、科学计算、机器学习等领域中不可或缺的工具,对于 Python 程序员来说,掌握这些算法是非常重要的。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python 中有哪些常用的数组处理算法,它们如何实现?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何实现Python中常用图片处理函数的使用

这篇文章跟大家分析一下“如何实现Python中常用图片处理函数的使用”。内容详细易懂,对“如何实现Python中常用图片处理函数的使用”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习
2023-06-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录