python coding
发布日期:2021-09-16 07:31:52 浏览次数:1 分类:技术文章

本文共 2714 字,大约阅读时间需要 9 分钟。

文章目录

单链表快速排序

class ListNode():    def __init__(self,val):        self.val = val        self.next = Noneclass Solution():    def mergesortoflist(self,node):        if not node or not node.next:            return node        midnode = node        left = ListNode(0)        resL = left        right = ListNode(0)        resR = right        node = node.next        while node:            if midnode.val < node.val:                right.next = node                right = right.next            else:                left.next = node                left = left.next            node = node.next        left.next = None        right.next = None        L = self.mergesortoflist(resL.next)        R = self.mergesortoflist(resR.next)        midnode.next = R        if not L:            return midnode        else:            temp = L            while temp.next:                temp = temp.next            temp.next = midnode        return L a = [2,5,3,8,7,0,1,5,4,6,1]nh = ListNode(0)n = nhfor tmp in a:    tmpn = ListNode(tmp)    n.next = tmpn    n = tmpnnh = nh.nextquicksort = Solution()nhsort = quicksort.mergesortoflist(nh)asort = []tmpn = nhsortwhile tmpn is not None:    asort.append(tmpn.val)    tmpn = tmpn.nextprint(a)print(asort)# --------------------------------------------输出---------------------------------------[2, 5, 3, 8, 7, 0, 1, 5, 4, 6, 1][0, 1, 1, 2, 3, 4, 5, 5, 6, 7, 8]

数组快速排序

def quickSorst(array):    if len(array) < 2:        return array    else:        pivot = array[0]        less = [i for i in array[1:] if i <= pivot]        greater = [i for i in array[1:] if i > pivot]        return quickSorst(less) + [pivot] + quickSorst(greater)a = quickSorst([2, 5, 3, 8, 7, 0, 1, 5, 4, 6, 1])print(a)# --------------------------------------------输出---------------------------------------[0, 1, 1, 2, 3, 4, 5, 5, 6, 7, 8]

并查集

class UnionFind:    def __init__(self):        """        记录每个节点的父节点        """        self.father = {
} def find(self,x): """ 查找根节点 路径压缩 """ root = x while self.father[root] != None: root = self.father[root] # 路径压缩 while x != root: original_father = self.father[x] self.father[x] = root x = original_father return root def merge(self,x,y,val): """ 合并两个节点 """ root_x,root_y = self.find(x),self.find(y) if root_x != root_y: self.father[root_x] = root_y def is_connected(self,x,y): """ 判断两节点是否相连 """ return self.find(x) == self.find(y) def add(self,x): """ 添加新节点 """ if x not in self.father: self.father[x] = None

例题:

转载地址:https://blog.csdn.net/wqwqqwqw1231/article/details/116486174 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【论文阅读】【三维目标检测】Center-based 3D Object Detection and Tracking
下一篇:【代码阅读】Sparse Convolution代码理解

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月24日 20时20分04秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

bss、data和rodata区别与联系 2019-04-25
C代码中如何使用链接脚本.lds中定义的变量 2019-04-25
ARM指令和Thumb指令的区别 2019-04-25
作为一个新人,怎样学习嵌入式Linux? 2019-04-25
ARM 结构的异常向量表 2019-04-25
伪指令 .word 2019-04-25
站在2018看单片机和嵌入式芯片方案选型和发展趋势 2019-04-25
Linux内核编程初探:块设备驱动程序——Ramdisk 2019-04-25
C语言 memcpy 用法 2019-04-25
浅论各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别 2019-04-25
C++深度解析 内联函数分析 内联inline和宏#define(5) 2019-04-25
C++深度解析 函数参数的扩展---函数参数的默认值,函数默认参数的规则,函数占位参数(6) 2019-04-25
C++深度解析 函数重载分析(7) 2019-04-25
报表的 SQL 注入风险是什么意思?如何防范? 2019-04-25
JS-part3.3-复杂数据类型之 数组和排序方法 2019-04-25
【Python自学笔记】新手爬虫必备!!scrapy2.5.0重新整理(更新中...) 2019-04-25
【Python自学笔记】MySql数据库,MySql8存储json数据(含安装&基本使用&Scrapy保存数据) 2019-04-25
【Kivy自学笔记】Python开发App必备!Kivy基础控件详解(含视频&源码) 2019-04-25
【Python自学笔记】新手爬虫必备!Scrapy快速下载图片&文件,如何自定义文件名(源码) 2019-04-25
【Python自学笔记】新手爬虫必备!Scrapy如何使用Selector快速提取HTML页面数据(CSS/Xpath/re正则) 2019-04-25