当前位置: 首页 > news >正文

leetcode 排序算法汇总

快速排序

def quicksort(arr):
    if len(arr) <= 1:
        return arr
    else:
        pivot = arr[len(arr) // 2]  # 选择中间值作为基准
        left = [x for x in arr if x < pivot]  # 小于基准的放左边
        middle = [x for x in arr if x == pivot]  # 等于基准的放中间
        right = [x for x in arr if x > pivot]  # 大于基准的放右边
        return quicksort(left) + middle + quicksort(right)  # 递归排序

# 测试快速排序算法
arr = [3, 6, 8, 10, 1, 2, 1]
print("原始数组:", arr)
sorted_arr = quicksort(arr)
print("排序后数组:", sorted_arr)
 

冒泡排序

def bubble_sort(arr):
    n = len(arr)
    for i in range(n-1):
        # 标志位用于优化,如果在一轮比较中没有元素交换,说明数组已经有序,可以直接结束排序
        swapped = False
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                # 交换
                arr[j], arr[j+1] = arr[j+1], arr[j]
                swapped = True
        # 如果没有发生交换,说明数组已经有序,退出循环
        if not swapped:
            break
    return arr

# 示例
arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(arr)
print("Sorted array is:", sorted_arr)

直接插入排序

def insertion_sort(arr):
    # 遍历从1到len(arr)的所有元素
    for i in range(1, len(arr)):
        key = arr[i]  # 当前要插入的元素
        j = i - 1
        # 将当前元素与已排序部分的元素进行比较,找到合适的插入位置
        while j >= 0 and key < arr[j]:
            arr[j + 1] = arr[j]  # 将已排序部分的元素向后移动
            j -= 1
        # 插入当前元素
        arr[j + 1] = key
    return arr

# 示例
if __name__ == "__main__":
    arr = [12, 11, 13, 5, 6]
    print("原始数组:", arr)
    sorted_arr = insertion_sort(arr)
    print("排序后数组:", sorted_arr)
 

二分查找法

def binary_search(arr, target):
    """
    二分查找法
    :param arr: 有序数组
    :param target: 查找目标
    :return: 目标在数组中的索引,如果不存在返回-1
    """
    low = 0
    high = len(arr) - 1

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

# 示例
if __name__ == "__main__":
    my_list = [1, 3, 5, 7, 9]  # 示例数组
    print(binary_search(my_list, 3))  # 输出:1,因为3在数组中的索引位置是1
    print(binary_search(my_list, -1)) # 输出:-1,因为-1不在数组中
 

相关文章:

leetcode 排序算法汇总

快速排序 def quicksort(arr): if len(arr) < 1: return arr else: pivot arr[len(arr) // 2] # 选择中间值作为基准 left [x for x in arr if x < pivot] # 小于基准的放左边 middle [x for x in arr if x pivot] # 等…...

【C】错误的变量定义导致sprintf()‌输出错误

问题描述 刚刚写一个用AT指令透传相关的函数&#xff0c;需要用到sprintf()‌拼接字符串。 结果发现sprintf()‌拼接出来的内容是错误的&#xff0c;简化后的代码如下&#xff1a; const char AT_CIPSEND_FIX_LENGTH_HEADER[11] "ATCIPSEND"; // 错误的&#xff0…...

python基础导包

Python项目代码结构与导包详解 目录 引言 Python项目的基本结构 2.1 单文件项目2.2 多模块项目2.3 包结构项目2.4 示例项目结构 模块与包 3.1 模块&#xff08;Module&#xff09;3.2 包&#xff08;Package&#xff09;3.3 子包&#xff08;Subpackage&#xff09; 导包&a…...

【含开题报告+文档+PPT+源码】基于SSM的电影数据挖掘与分析可视化系统设计与实现

开题报告 随着互联网的普及和数字娱乐产业的蓬勃发展&#xff0c;电影作为一种重要的娱乐方式&#xff0c;已经深入人们的日常生活。然而&#xff0c;面对海量的电影资源&#xff0c;用户在选择观影内容时常常感到困惑和无所适从。传统的电影推荐方式&#xff0c;如人工筛选、…...

strlwr(arr);的模拟实现(c基础)

hi , I am 36 适合对象c语言初学者 strlwr(arr)&#xff1b;函数是把arr数组变为小写字母,并返回arr 链接介绍一下strlwr(arr)&#xff1b;(c基础)-CSDN博客 下面进行My__strlwr(arr);模拟实现 #include<stdio.h> //返回值为arr(地址),于是用指针变量,原数组为字符型…...

LCR 002. 二进制求和

一.题目&#xff1a; . - 力扣&#xff08;LeetCode&#xff09; 二.原始解法-利用二进制逢二进一&#xff1a; 自己实现的时候忽略了一点&#xff0c;就是进位是会滚动的&#xff0c;不是进位一次就结束&#xff0c;很复杂跳过 三.正确解法及好的讲解、力扣解法参考&#xf…...

MySQL-C3P0连数据库报错问题

MySQL-C3P0连数据库报错问题 No suitable driver found for 首先检查MySQL数据库版本与依赖版本是否一致&#xff0c;如8.0.40数据库&#xff0c;需要使用8.0以上的依赖。检查c3p0的依赖版本&#xff0c;需要符合系统应用特性检查c3p0.xml配置文件的地址&#xff0c;需要在reso…...

云计算期中作业:Spark机器学习问题解决

在原有pdf教程教程上&#xff0c;做一个补充 idea内搭建环境 导入依赖 就直接利用之前的作业工程项目里直接写&#xff0c;所以依赖基本上不用再导入了&#xff0c;如果要导入&#xff0c;看自己依赖的版本号&#xff0c;不要直接复制教程&#xff0c;比如我的&#xff1a; …...

计算机网络socket编程(6)_TCP实网络编程现 Command_server

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络socket编程(6)_TCP实网络编程现 Command_server 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论…...

RabbitMQ 集群

文章目录 前言单机多节点搭建集群创建RabbitMQ节点停止服务并重置将节点加入到集群中查看集群状态宕机 结论 前言 RabbitMQ 作为消息中间件&#xff0c;可以与多个生产者和消费者进行绑定&#xff0c;但是如何只有一台 RabbitMQ 服务的话&#xff0c;那么这个 RabbitMQ 就需要…...

从零开始:使用 Spring Boot 开发图书管理系统

如何利用是springboot搭建一个简单的图书管理系统&#xff0c;下面让我们一起来看看吧 文章目录 项目结构1. 主类 LibraryApplication.java功能与注意事项&#xff1a; 2. 模型类 Book.java功能与注意事项&#xff1a; 3. 数据仓库接口 BookRepository.java功能与注意事项&…...

速盾:海外服务器使用CDN加速有什么优势?

CDN&#xff08;Content Delivery Network&#xff09;是指一种分布式网络架构&#xff0c;将内容分发到全球多个节点服务器上&#xff0c;使用户能够就近获取所需内容。海外服务器使用CDN加速&#xff0c;具有以下几个优势&#xff1a; 提高访问速度&#xff1a;CDN将内容复制…...

(二)手势识别——动作模型训练【代码+数据集+python环境(免安装)+GUI系统】

&#xff08;二&#xff09;手势识别——动作模型训练【代码数据集python环境&#xff08;免安装&#xff09;GUI系统】 背景意义 随着互联网的普及和机器学习技术的进一步发展&#xff0c;手势识别技术开始使用深度学习等方法进行手势识别&#xff0c;如Convolutional Neural…...

window系统下使用open-webui+ollama部署大模型

前面一篇博文中讲述了window下用ollama+AnythingLLM部署本地知识库,但是个人感觉anythingllm不是很好用,还不如直接用cmd窗口,而且仅能本机使用,如果想部署到服务器上面供其他人访问,完全不可行,但是使用open-webui+ollama或者独立的open-webui救可以实现。 使用open-web…...

一加ACE 3 Pro手机无法连接电脑传输文件问题

先说结论&#xff1a;OnePlus手机无法连接电脑传输数据的原因&#xff0c;大概率是一加数据线的问题。尝试其他手机品牌的数据线&#xff08;比如华为&#xff09;&#xff0c;再次尝试。 连接电脑方法&#xff1a; 1 打开开发者模式&#xff08;非必要操作&#xff09; 进入…...

因果机器学习EconML | 客户细分案例——基于机器学习的异质性处理效果估计

机器学习的最大承诺之一是在众多应用领域中实现决策自动化。在大多数数据驱动的个性化决策场景中出现的一个核心问题是对异质性处理效果的估计&#xff1a;作为处理样本的一组可观察特征的函数&#xff0c;干预对感兴趣结果的影响是什么&#xff1f;例如&#xff0c;这个问题出…...

找到最大“葫芦”组合

文章目录 问题描述解题思路分析1. 数据预处理2. 特殊情况处理3. 普通情况计算4. 结果输出 Java代码实现复杂度分析与优化 在经典德州扑克中&#xff0c;“葫芦”是一种较强的牌型。它由五张牌组成&#xff0c;其中三张牌面值相同&#xff0c;另外两张牌面值也相同。本文将探讨一…...

shell(9)完结

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…...

【计算机网络】多路转接之select

系统提供select()来实现多路转接 IO 等 拷贝 -> select()只负责等待&#xff0c;可以一次等待多个fd select()本身没有数据拷贝的能力&#xff0c;拷贝要read()/write()来完成 一、select的使用 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exc…...

数据库-基础理论

文章目录 前言一、ORM框架二、ACID原则三、事务Transaction四、N1问题五、Normalization三范式六、FMEA方法论&#xff08;Failure Mode and Effects Analysis&#xff09;七、Profiling和PerformanceSchema查询分析 前言 基础理论 ORM框架、ACID原则、事务Transaction、N1问…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...