![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
文章平均质量分 53
洌泉_就这样吧
Less is more.
展开
-
【PyGame】sprite模块使用
"""Use sprites to collect blocks. Sample Python/Pygame ProgramsSimpson College Computer Sciencehttp://programarcadegames.com/http://simpson.edu/computer-science/ Explanation video: http://youtu.be/4W2AqUetBi4"""import pygameimport random # Def原创 2022-03-08 14:54:46 · 763 阅读 · 0 评论 -
插入排序(Insertion-Sort)
1 概述插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。通俗讲就是,好比打斗地主时抓扑克牌一样,每次抓起一张牌就找到其合适的位置放进去。2 算法流程每次循环需要加入一个未排序的元素key,从后往前扫描,如果比key大的数就将其后移位置,给key腾位置,扫描到初始位置或找到不大于key的元素,实际上就是给key找合适的位置放进去第1个元素不用找位置,从第2个元素开始按照步骤1找原创 2021-05-24 10:35:18 · 546 阅读 · 0 评论 -
基数排序(Radix Sort)
1 概述基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。2 算法流程取得数组中的最大数,并取得位数;arr为原始数组,从最低位开始取每个位组成radix数组;对radix进行计数排序(利用计数排序适用于小范围数的特点);3 代码/Pythonimport random def radix_sort(arr):原创 2021-05-21 16:49:04 · 148 阅读 · 0 评论 -
桶排序(Bucket Sort)
1 概述桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排)。2 算法流程设置一个定量的数组当作空桶;遍历输入数据,并且把数据一个一个放到对应的桶里去;对每个不是空的桶进行排序;从不是空的桶里把排好序的数据拼接起来。3 代码/Pythonimport random原创 2021-05-21 16:35:57 · 454 阅读 · 0 评论 -
计数排序(Counting Sort)
1 概述计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。2 算法流程找出待排序的数组中最大和最小的元素统计数组中每个值为i的元素出现的次数,存入数组C(即容器)的第i项根据容器计数结果重新填充目标数组,从小到大或从大到小,例如,计数了m个50就填充m个3 代码/Pythondef countingSort(arr, maxValue): # 根据最大值来构建容器原创 2021-05-21 16:02:06 · 188 阅读 · 0 评论 -
堆排序(Heap Sort)
1 概述堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。2 算法流程首先构建最大堆,要求是每个非叶节点的值大于其左右子节点的值,构建过程从非叶节点最大序号开始,根据【父节点是i,则其左子节点是2*i+1,其右子节点是2*i+2】的规律,进行检查,如果不满足则需要做交换根据最大堆,将根节点的最大值与末尾叶节点交换,将最大值取出,实质上是选择过程,然后重新检查堆,调整为最大堆原创 2021-05-21 15:43:05 · 135 阅读 · 0 评论 -
快速排序(Quick Sort)
1 概述快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。2 算法流程每一步以序列初始为基准,将小于基准的元素放左边,大于基准的元素放右边完成步骤1之后,再递归调用对基准左边和基准右边分别进行排序循环步骤1和步骤2,递归调用的终止条件是数组长度小于等于13 代码/Python# 快排的输入是数组和两个端点下标def QuickSort(nums, i, j): # 递原创 2021-05-21 10:56:08 · 139 阅读 · 0 评论 -
归并排序(Merge Sort)
1 概述归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列间有序。若将两个有序表合并成一个有序表,称为2路归并。2 算法流程拆分:将序列进行拆分,一半操作是分成长度相等(或接近)的两个子序列合并:将两个子序列进行合并,同时遍历两个子序列,依次取出较大/较小数递归调用,拆分终止条件是序列长度小于等于1,合并是从小序列开始逐步合并3 代码/Pyt原创 2021-05-21 10:26:47 · 144 阅读 · 0 评论 -
【LeetCode/力扣】1035. 不相交的线
1 题目描述题目链接:https://leetcode-cn.com/problems/uncrossed-lines/在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足:nums1[i] == nums2[j]且绘制的直线不与任何其他连线(非水平线)相交。请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。以这种方法绘制线条,并返回可以绘制的最大连线数。原创 2021-05-21 09:41:47 · 253 阅读 · 0 评论 -
希尔排序(Shell Sort)
1 概述希尔排序(Shell Sort)是1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。2 算法流程每次循环需要加入一个未排序的元素key,从后往前扫描,如果比key大的数就将其后移位置,给key腾位置,扫描到初始位置或找到不大于key的元素,实际上就是给key找合适的位置放进去第1个元素不用找位置,从第2个元素开始按照步骤1找位置,依次进行,直至完成最后1个位置的找位置操作3原创 2021-05-20 16:37:25 · 151 阅读 · 0 评论 -
选择排序(Selection Sort)
1 概述选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的起始位置。以此类推,直到所有元素均排序完毕。2 算法流程假设完成升序排列,初始选择所有未排列的数列起始位置的元素为最小值,然后遍历之后的所有未排列的数列,如果存在比设定最小值更小的数,则替换设定的最小值每次循环按照步骤1进行,第1次确定出最小值,放在第1位,第2次确定出第2小值,原创 2021-05-20 15:13:43 · 505 阅读 · 0 评论 -
冒泡排序(Bubble Sort)
1 概述冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小或越大的元素会经由交换慢慢“浮”出2 算法流程相邻元素比较,升序排列则较大的数放后面,降序排列则较小的数放后面完成一次遍历就能确定出所有未排序元素的最大值或最小值,放在最后,是为冒泡算法通过嵌套的两层循环完成所有元素的冒泡3 代码/Pythondef BubbleSort原创 2021-05-20 14:41:56 · 142 阅读 · 0 评论 -
【LeetCode/力扣】692. 前K个高频单词
1 题目描述题目链接:https://leetcode-cn.com/problems/top-k-frequent-words/给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”]解析: “i” 和 “love” 为出现次数最多的两个单词,原创 2021-05-20 08:51:51 · 175 阅读 · 0 评论 -
【LeetCode/力扣】1442. 形成两个异或相等数组的三元组数目
1 题目描述题目链接:https://leetcode-cn.com/problems/count-triplets-that-can-form-two-arrays-of-equal-xor/给你一个整数数组 arr 。现需要从数组中取三个下标 i、j 和 k ,其中 (0 <= i < j <= k < arr.length) 。a 和 b 定义如下:a = arr[i] ^ arr[i + 1] ^ … ^ arr[j - 1]b = arr[j] ^ arr[j原创 2021-05-18 10:48:04 · 129 阅读 · 0 评论 -
【LeetCode/力扣】12. 整数转罗马数字
1 题目描述题目链接:https://leetcode-cn.com/problems/integer-to-roman/罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个原创 2021-05-14 08:52:32 · 118 阅读 · 0 评论 -
【LeetCode/力扣】1310. 子数组异或查询
1 题目描述题目链接:https://leetcode-cn.com/problems/xor-queries-of-a-subarray/有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]。对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值(即 arr[Li] xor arr[Li+1] xor … xor arr[Ri])作为本次查询的结果。并返回一个包含给定查询 queries 所有结果的数组。示例 1:输入:原创 2021-05-12 09:38:46 · 136 阅读 · 0 评论 -
迪杰斯特拉(dijkstra)算法求解最短路(Python/C++)
1 问题描述最短路问题是经典的运筹学问题,即在一个拥有许多节点的网络中求解起点到终点的最短路径长度网络又称为图,包含有向图和无向图,有向图是起点到终点是单向可行的,无向图是起点到终点是双向可行的,实际上,无向图可以转化为有向图,就是两点之间包含两条有向路径每条路径上设置有权重,表示路径通行代价或花费,一般意义上,权重都是正的,即通行每条路径都需要花费(邮费、路费、时间等),特殊情况下,会有零权重和负权重,在本文中只涉及非负权重一个典型的例子如下:一个无向图包含6个节点,分别是A、B、C、D、E、F,原创 2021-05-10 17:21:14 · 1045 阅读 · 0 评论 -
【LeetCode/力扣】2. 两数相加
1 题目描述题目链接:https://leetcode-cn.com/problems/add-two-numbers/给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输原创 2021-05-07 09:21:14 · 91 阅读 · 0 评论 -
【LeetCode/力扣】1486. 数组异或操作
1 题目描述题目链接:https://leetcode-cn.com/problems/xor-operation-in-an-array/给你两个整数,n 和 start 。数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。请返回 nums 中所有元素按位异或(XOR)后得到的结果。示例 1:输入:n = 5, start = 0输出:8解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^原创 2021-05-07 08:50:35 · 157 阅读 · 0 评论 -
【LeetCode/力扣】1720. 解码异或后的数组
1 题目描述题目链接:https://leetcode-cn.com/problems/decode-xored-array/未知 整数数组 arr 由 n 个非负整数组成。经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如,arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。给你编码后的数组 encoded 和原数组 arr 的第一个元素 first(arr[0]原创 2021-05-06 15:48:59 · 129 阅读 · 0 评论 -
【LeetCode/力扣】1160. 拼写单词
1 题目描述题目链接:https://leetcode-cn.com/problems/find-words-that-can-be-formed-by-characters/给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写(指拼写词汇表中的一个单词)时,chars 中的每个字母都只能用一次。返回词汇表 words 中原创 2021-05-06 14:45:09 · 205 阅读 · 0 评论 -
【LeetCode/力扣】350. 两个数组的交集 II
1 题目描述题目链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑原创 2021-05-06 11:07:40 · 93 阅读 · 0 评论 -
【LeetCode/力扣】44. 通配符匹配
1 题目描述题目链接:https://leetcode-cn.com/problems/wildcard-matching/给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = “aa”p原创 2021-05-06 10:37:33 · 266 阅读 · 0 评论 -
【LeetCode/力扣】8. 字符串转换整数 (atoi)
1 题目描述题目链接:https://leetcode-cn.com/problems/string-to-integer-atoi/请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数原创 2021-05-06 10:35:04 · 84 阅读 · 0 评论 -
【LeetCode/力扣】4. 寻找两个正序数组的中位数
1 题目描述题目链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?说明:示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2原创 2021-05-06 10:30:12 · 65 阅读 · 0 评论 -
轻松入门TensorFlow
《TensorFlow实战》是2017年2月刚上市的,本文是该书的读书笔记1 TensorFlow简介TensorFlow是由Google公司开发的开源框架,提供实现机器学习算法接口TensroFlow是由Google Brain团队基于第一代分布式机器学习框架DistBelief(未开源)上开发的2015.11在Github上开源,2016.4补充分布式版本,2017.1发布1.0版本TensorFlow官网:www.tensorflow.orgGitHub: github.com/te原创 2021-04-27 11:25:53 · 266 阅读 · 0 评论 -
Python可视化入门
可视化路漫漫,一步一个脚印往前走!S0 写在前面最近一直在可视化的道路上不断前行,看书+码代码一开始是看浙大陈为他们写的《数据可视化》,了解可视化的一些基本知识然后是看可视化工具,Python可视化只是其中之一本文是基于《Python数据可视化编程实战》内容总结的主要是关于Python可视化入门的基础内容,更多是以例子和程序来总结S1 环境设置需要安装库:matplotlib、Numpy、Scipy、PIL、Requests可使用预打包环境:EPD、Anaconda、Pytho.原创 2021-04-27 11:26:26 · 221 阅读 · 2 评论 -
Python网络爬虫
——问:“如何完成《大卫》这样杰出的作品”——米开朗基罗答:“很简单,只要用锤子把石头上不像大卫的地方敲掉就可以了!”采集信息用的程序一般被称为网络爬虫( Web crawler)、网络铲( Web scraper,可类比考古用的洛阳铲)、网络蜘蛛( Web spider),其行为一般是先“爬”到对应的网页上,再把需要的信息“铲”下来。网络数据采集是普通大众细纹乐见的计算机巫术,在信息爆炸的时代,互联网上充斥着大量信息,网络爬虫是获取网络上的信息资源的有效手段。Python在爬虫编程上有 url.原创 2021-04-26 19:24:56 · 364 阅读 · 2 评论