【排序数组】python刷题记录

news2024/11/25 17:18:26

润到排序算法了。

顺便复习一下排序算法

easy work

class Solution:
    def sortArray(self, nums: List[int]) -> List[int]:
        nums.sort()
        return nums

 11种排序算法

# 选择排序
def selectsort(s):
    for i in range(0,len(s)-1):
        curmin=inf
        curidx=-1
        for j in range(i,len(s)):
            if s[j]<curmin:
                curmin=s[j]
                curidx=j
        if curidx!=-1:
            s[i],s[curidx]=s[curidx],s[i]

#冒泡排序
def bubblesort(s):
    for i in range(len(s)-1,-1,-1):
        for j in range(0,i):
            if s[j]>s[j+1]:
                s[j+1],s[j]=s[j],s[j+1]

#插入排序
def insertsort(s):
    n=len(s)
    for i in range(1,n):
        x=s[i]
        j=i-1
        while j>=0:
            if x<=s[j]:
                s[j+1]=s[j]
                j-=1
            else:
                break
        s[j+1]=x

#归并排序
def merge(s,start,mid,end):
    tmp=[]
    l=start
    r=mid+1
    while l<=mid and r<=end:
        if s[l]<=s[r]:
            tmp.append(s[l])
            l+=1
        else:
            tmp.append(s[r])
            r+=1
    tmp.extend(s[l:mid+1])
    tmp.extend(s[r:end+1])
    for i in range(start,end+1):
        s[i]=tmp[i-start]
def mergesort(s,start,end):
    if start==end:
        return 
    mid=(start+end)//2
    mergesort(s,start,mid)
    mergesort(s,mid+1,end)
    merge(s,start,mid,end)
    
#桶排序(适用于数据分布均匀的排序)
def bucketsort(s):
    maxv=max(s)
    minv=min(s)
    bucket=[[],[],[]]
    bucketCount=3
    perbucket=(maxv-minv+bucketCount)//bucketCount
    for num in s:
        bucketidx=(num-minv)//perbucket
        bucket[bucketidx].append(num)
    for i in range(bucketCount):
        selectsort(bucket[i])
    idx=0
    for i in range(bucketCount):
        for j in bucket[i]:
            s[idx]=j
            idx+=1

#计数排序(适用于数据范围小的排序,空间换时间)
def countsort(s):
    cnt=max(s)+1
    counter=[0]*cnt
    for x in s:
        counter[x]+=1
    s.clear()
    for i in range(len(counter)):
        s.extend([i]*counter[i])

#基数排序
def radixsort(s):
    base=1
    maxv=max(s)
    while base<=maxv:
        bucket=[]
        for idx in range(10):
            bucket.append([])
        for num in s:
            idx=num//base%10
            bucket[idx].append(num)
        l=0
        for idx in range(10):
            for v in bucket[idx]:
                s[l]=v
                l+=1
        base*=10
        
#快速排序
def quicksortpivot(a,start,end):
    pivot=start
    j=start+1
    for i in range(start+1,end+1):
        if a[i]<=a[pivot]:
            a[i],a[j]=a[j],a[i]
            j+=1
    a[pivot],a[j-1]=a[j-1],a[pivot]
    pivot=j-1
    return pivot
def quicksort(a,start,end):
    if start>=end:
        return
    pivot=quicksortpivot(a,start,end)
    quicksort(a,start,pivot-1)
    quicksort(a,pivot+1,end)

#随机快速排序
def quicksortpivot(a,start,end):
    randidx=random.randint(start,end)
    a[start],a[randidx]=a[randidx],a[start]
    pivot=start
    j=start+1
    for i in range(start+1,end+1):
        if a[i]<=a[pivot]:
            a[i],a[j]=a[j],a[i]
            j+=1
    a[pivot],a[j-1]=a[j-1],a[pivot]
    pivot=j-1
    return pivot
def quicksort(a,start,end):
    if start>=end:
        return
    pivot=quicksortpivot(a,start,end)
    quicksort(a,start,pivot-1)
    quicksort(a,pivot+1,end)
    
#希尔排序
def shellsort(a):
    n=len(a)
    gap=n//2
    while gap>0:
        for i in range(gap,n):
            x=a[i]
            j=i
            while j>=gap:
                if x<a[j-gap]:
                    a[j]=a[j-gap]
                else:
                    break
                j-=gap
            a[j]=x
        gap//=2

#堆排序
def maxheapify(heap,start,end):
    son=start*2
    while son<=end:
        if son+1<=end and heap[son+1]>heap[son]:
            son+=1
        if heap[son]>heap[start]:
            heap[start],heap[son]=heap[son],heap[start]
            start,son=son,son*2
        else:
            break
def heapsort(a):
    heap=[None]+a
    root=1
    l=len(heap)
    for i in range(l//2,root-1,-1):
        maxheapify(heap,i,l-1)
    for i in range(l-1,root,-1):
        heap[i],heap[root]=heap[root],heap[i]
        maxheapify(heap,root,i-1)
    return heap[root:]

详细可看

. - 力扣(LeetCode) 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1938872.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【运维】软件运维方案(2024word完整版)

1. 文档介绍 2. 人员与责任 3. 运维过程内容 4. 运维资源 5. 运维服务规划保障 6. 事件处置 7. 质量改进 8. 运维边界及内容 获取方式&#xff1a; 本文末个人名片直接获取。

Leetcode1688. 比赛中的配对次数

问题描述&#xff1a; 给你一个整数 n &#xff0c;表示比赛中的队伍数。比赛遵循一种独特的赛制&#xff1a; 如果当前队伍数是 偶数 &#xff0c;那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛&#xff0c;且产生 n / 2 支队伍进入下一轮。如果当前队伍数为 奇…

【计算机视觉】siamfc论文复现实现目标追踪

什么是目标跟踪 使用视频序列第一帧的图像(包括bounding box的位置)&#xff0c;来找出目标出现在后序帧位置的一种方法。 什么是孪生网络结构 孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中&#xff0…

【SRC】小程序抓包巨详细配置,一个Burp就够了,但是可以更优雅!

小程序抓包配置 文章目录 小程序抓包配置0x00 前言0x01 直接使用BurpSuite抓包0x02 配合Proxifier 0x00 前言 其实在PC端抓微信小程序的包&#xff0c;只需要一个BurpSuite就足够了&#xff0c;但是为了避免抓一些没用的包&#xff0c;减少对小程序抓包测试过程中的干扰&#…

学生处分类型管理

在智慧校园学工管理系统中&#xff0c;"处分类型"功能扮演着至关重要的角色&#xff0c;它如同一座桥梁&#xff0c;连接着校园秩序与学生行为规范的两端。这一模块的核心精髓&#xff0c;在于它以精准的违规行为界定和适当的处分措施&#xff0c;巧妙地平衡了纪律的…

Qmi8658a姿态传感器使用心得(4)linux

1.FIFO 结构与大小 FIFO 数据可以包含陀螺仪和加速度计数据&#xff0c;通过 SPI/I2C/I3C 接口以突发读模式读取。FIFO 大小可配置为 16 样本、32 样本、64 样本或 128 样本&#xff08;每个样本为 6 字节&#xff09;。 2.FIFO 模式 Bypass 模式&#xff1a;禁用 FIFO 功能。…

SpringCloud03_loadbalancer的概述、负载均衡解析、切换、原理

文章目录 ①. Ribbon进入维护模式②. loadbalancer的概述③. loadbalancer负载均衡解析④. 负载均衡案例总结⑤. 负载均衡算法原理 ①. Ribbon进入维护模式 ①. Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 ②. 维护模式不再介绍,了解即可 ③.…

大语言模型-Transformer-Attention Is All You Need

一、背景信息&#xff1a; Transformer是一种由谷歌在2017年提出的深度学习模型。 主要用于自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;特别是序列到序列&#xff08;Sequence-to-Sequence&#xff09;的学习问题&#xff0c;如机器翻译、文本生成等。Transfor…

【python】Numpy运行报错分析:ValueError - 数组维度不一致

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

java中多态的用法

思维导图&#xff1a; 1. 多态的概念 多态通俗的讲就是多种形态&#xff0c;同一个动作&#xff0c;作用在不同对象上&#xff0c;所产生不同的形态。 例如下图&#xff1a; 2. 多态的实现条件 Java中&#xff0c;多态的实现必须满足以下几个条件&#xff1a; 1. 必须在继承…

动画革命:Lottie如何改变我们对移动应用交互的认知

在数字世界的浩瀚星空中&#xff0c;每一个像素都跃动着无限创意与想象的火花。当静态的界面遇上动态的魔法&#xff0c;一场视觉盛宴便悄然开启。今天&#xff0c;让我们一同揭开一位幕后英雄的神秘面纱——Lottie&#xff0c;这个在UI/UX设计界掀起波澜的动画利器&#xff0c…

[trick]使用生成器打破嵌套循环

原文 break用于结束循环。但是&#xff0c;如果有嵌套循环&#xff0c;如何跳出外层循环&#xff1f; def this_is_the_one(x):return x 3my_list [[1, 2], [3, 4], [5, 6]] for sublist in my_list:for element in sublist:print(f"Checking {element}")if this_…

农场驿站平台小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;农场资讯管理&#xff0c;卖家管理&#xff0c;用户分享管理&#xff0c;分享类型管理&#xff0c;商品信息管理&#xff0c;商品分类管理&#xff0c;系统管理&#xff0c;订单管…

天舟飞船可视化:直观体验太空任务全过程

利用图扑先进的 3D 可视化技术&#xff0c;实时展示天舟飞船的发射、对接和任务执行&#xff0c;为观众提供身临其境的太空探索体验。

奥比岛手游攻略:新手攻略大全!云手机辅助!

《奥比岛&#xff1a;梦想国度》是一款画风可爱的Q版休闲益智手游。在这个充满童话色彩的世界里&#xff0c;玩家们可以度过快乐的每一天&#xff0c;结交许多朋友&#xff0c;完成各种任务&#xff0c;体验丰富多彩的游戏玩法。下面将为大家带来详细的攻略大全。 游戏前瞻&…

Java 面试 | Redis

目录 1. 在项目中缓存是如何使用的&#xff1f;2. 为啥在项目中要用缓存&#xff1f;3. 缓存如果使用不当会造成什么后果&#xff1f;4. redis 和 memcached 有什么区别&#xff1f;5. redis 的线程模型是什么&#xff1f;6. 为什么单线程的 redis 比多线程的 memcached 效率要…

Python酷库之旅-第三方库Pandas(035)

目录 一、用法精讲 106、pandas.Series.iloc方法 106-1、语法 106-2、参数 106-3、功能 106-4、返回值 106-5、说明 106-6、用法 106-6-1、数据准备 106-6-2、代码示例 106-6-3、结果输出 107、pandas.Series.__iter__魔法方法 107-1、语法 107-2、参数 107-3、…

Science Robotics 一种使用导电嵌段共聚物弹性体和心理物理阈值来实现准确触觉效果的方法

速读&#xff1a;电触觉刺激作为感官替代的形式存在许多问题&#xff0c;如反应不一致、疼痛和脱敏等问题。加州大学Darren J. Lipomi教授团队研究了一种利用导电嵌段共聚物弹性体和心理物理阈值来实现准确触觉的方法。通过优化材料、设备布局和校准技术&#xff0c;他们在10名…

web服务器——虚拟主机配置实战

搭建静态网站 —— 基于 http 协议的静态网站 实验 1 &#xff1a;搭建一个 web 服务器&#xff0c;访问该服务器时显示 “hello world” 欢迎界面 。 实验 2 &#xff1a;建立两个基于 ip 地址访问的网站&#xff0c;要求如下 该网站 ip 地址的主机位为 100 &#xff0c;设置…

jupyter_contrib_nbextensions安装失败问题

目录 1.文件路径长度问题 2.jupyter不出现Nbextensions选项 1.文件路径长度问题 问题&#xff1a; could not create build\bdist.win-amd64\wheel\.\jupyter_contrib_nbextensions\nbextensions\contrib_nbextensions_help_item\contrib_nbextensions_help_item.yaml: No su…