![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
【编程】Python算法
【编程】Python算法
越吃越胖
学
展开
-
排序算法总结_python实现
1 冒泡排序 时间复杂度:O(n^2) 空间复杂度:O(1) 稳定性:不稳定排序法 lt = [2,4,3,7,9,6,1] def dubble_sort(lt): print(f"输入数组:{lt}") for i in range(len(lt)-1): flag = 0 for j in range(len(lt)-1-i): if lt[j] > lt[j+1]: lt[j],lt[j+原创 2020-08-06 15:30:29 · 188 阅读 · 0 评论 -
Python_算法_去重重复数字
1. 描述 在面试某大厂的时候遇到一个笔试题目,题目内容为:给定一个列表,去除重复的数字(自身也不保留),例如 [1, 2, 2, 3, 4],处理后为 [1, 3, 4]。 2. 解题 用例输入:nums = [1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 7] 用例输出:nums = [1, 2, 5, 7] 2.1 暴力求解 看到题目的想到一种解法就是对每一个数字进行计数,最后只留出现次数为1的数字。但是这种方法的算法复杂度很好,在面试的时候并没有提到,在整理的时候梳理一下。 nums原创 2020-08-06 11:17:08 · 1994 阅读 · 0 评论 -
查找算法总结_python实现
1. 顺序查找 说明:顺序查找适合于存储结构为顺序存储或链接存储的线性表。 基本思想:顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。 复杂度分析:查找成功时的平均查找长度为:(假设每个数据元素的概率相等) ASL = 1/n(1+2+3+…+n) = (n+1)/2 ;当查找不成功时,需要n+1次比较,时间复杂度为O(n)。 def sequenceSear原创 2020-07-22 16:43:17 · 314 阅读 · 0 评论 -
阿里笔试题20春招笔试题汇总_python版本
正式批第一场 (2020/03/20) 1.扑克牌 有一叠扑克牌,每张牌介于1和10之间 有四种出牌方法: 单出1张 出2张对子 出五张顺子,如12345 出三连对子,如112233 给10个数,表示1-10每种牌有几张,问最少要多少次能出完 正式批第二场 (2020/03/23) 1.选队长 描述:给一个数字N(1<=N<=1e9),代表集合中有N个人,现在每次选若干个人出来,然后把这若干个人里面其中一个置为队长,这便是一种不同的选法,问你总共有多少种选法?问这样的组合的数量对10^9+7取原创 2020-07-22 14:27:48 · 717 阅读 · 1 评论 -
Python_算法实现_(12)二叉搜索树(BST)
1. 二叉搜索树 二叉搜索树(BST):如果一个二叉树满足:对于任意一个节点,其值不小于左子树的任何节点,且不大于右子树的任何节点(反之亦可),则为二叉搜索树。 BST 是一个很强大的数据结构。它允许在 O(log n) 时间内快速查找、插入和删除元素。更重要的是,BST 可以保持数据有序并且支持对 k 项数据进行区间检索而且时间复杂度是 O(k + log n)。这使得二叉搜索树成为关系型数据库...原创 2020-03-22 22:09:42 · 2933 阅读 · 0 评论 -
Python_算法实现_(11)位运算
1. 位运算 1.1 code 下图是python的位运算 1.2 实现 我们以,5(101)和 2(10)为例输出位运算结果 2. 用例 题目:写下一个正整数的二进制数形式时,有多少位数为1呢? 例如:99 = 0b1100011 解析:逐位右移与1做与运算 def count_1(value): n = 0 while value: if value &am...原创 2020-03-19 23:49:21 · 4550 阅读 · 0 评论 -
蒙特卡洛模拟求正弦函数
1 介绍 蒙特卡罗法也称统计模拟法、统计试验法。是把概率现象作为研究对象的数值模拟方法。是按抽样调查法求取统计值来推定未知特性量的计算方法。 本次我们将使用蒙特卡洛模拟思想,结合python对下列正弦函数的面积值进行求解。根据微积分的方法知道该面积的值为2。 2 python实现 2.1 求解分析 对于这种静态问题,可采用蒙克卡罗方法解决,原理是认为积分面积及其周围分布无数个点,求解矩形内的点数N...原创 2020-03-10 23:19:28 · 5189 阅读 · 0 评论 -
Python_算法实现_(10)Karatsuba乘法
1. Karatsuba乘法 Karatsuba 乘法是一种快速乘法。此算法在1960年由 Anatolii Alexeevitch Karatsuba 提出,并于1962年得以发表。此算法主要用于两个大数相乘。普通乘法的复杂度是 n²,而 Karatsuba 算法的复杂度仅为 3nlog2(3) 2. 算法原理 可以注意到 AD +BC 这个计算需要两个 O(n²/4) 的乘法和一个 O(n) ...原创 2019-08-07 12:02:08 · 20204 阅读 · 0 评论 -
Python_算法实现_(9)递归麦肯锡91函数
1. 什么是McCarthy 91 McCarthy 91 是一个递归的函数表达式如下: 函数的意思是当输入一个大于 100 的数字 n 时返回 n-10,当 n<10 的时候递归的对 n 进行运算,但是结果总是 91。 2. 算法实现 def mccarthy91_rec(n): if n > 100: return n - 10 else: ...原创 2019-08-04 23:35:16 · 19863 阅读 · 0 评论 -
Python_算法实现_(7)贪婪算法
1.NP完全问题 NP完全问题(Non-deterministic Polynomial complete problem)是没有快速算法的问题,其时间复杂度为O(n!)。通常没有完全判定问题是不是NP完全问题,但有一些经验能够帮助判断 元素较少时算法的运行速度非常快,随着元素的增加速度会变得非常慢 涉及“所有组合”问题通常是NP完全问题 不能将问题分为小问题,需要考虑各种情况,这类问题可能是N...原创 2019-07-27 23:43:52 · 20675 阅读 · 0 评论 -
Python_算法实现_(8)埃拉托色尼筛选法
1. 概念 埃拉托色尼筛选法(the Sieve of Eratosthenes)简称埃氏筛法,是古希腊数学家埃拉托色尼(Eratosthenes 274B.C.~194B.C.)提出的一种筛选法。 是针对自然数列中的自然数而实施的,用于求一定范围内的质数,它的容斥原理之完备性条件是p=H~。 在 i7 CPU(单线程)处理器下它可以在1s之内生成10^9以内的所有素数,因此,当这种筛选算法被应用...原创 2019-07-31 13:28:29 · 22147 阅读 · 0 评论 -
Python_算法实现_(6)Dijkstra算法实现
1.算法简介 戴克斯特拉算法(英语:Dijkstra’s algorithm,又译迪杰斯特拉算法)由荷兰计算机科学家艾兹赫尔·戴克斯特拉在1956年提出。戴克斯特拉算法使用了广度优先搜索解决赋权有向图的单源最短路径问题。该算法存在很多变体;戴克斯特拉的原始版本找到两个顶点之间的最短路径,但是更常见的变体固定了一个顶点作为源节点然后找到该顶点到图中所有其它节点的最短路径,产生一个最短路径树。该算法常...原创 2019-07-22 00:02:38 · 21018 阅读 · 0 评论 -
Python_算法实现_(5)广度优先搜索实现
1.概念 广度优先搜索算法(英语:Breadth-First-Search,缩写为BFS),又译作宽度优先搜索,或横向优先搜索,是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。 2.算法实现步骤 首先将根节点放入队列中。 从队列中取出第一个节点,并检验它是否为目标。 如果找到目标,则结束搜索并回传结果。 否则将它所有尚未检验过的直接...原创 2019-07-19 14:16:41 · 23018 阅读 · 0 评论 -
Python_算法实现_(4)条件互换
互换函数(SWAP)是将两个数字进行互换,确保较小的数字在前,较大的数字在后,一般写法如下: def swap(a, b): if a > b: return b, a else: return a, b num1,num2 = swap(3,4) num3,num4 = swap(5,4) print(num1,num2) print(n...原创 2019-06-28 16:18:17 · 21228 阅读 · 0 评论 -
Python_算法实现_(3)蒙特卡洛法
蒙特卡洛方法又称统计模拟法,随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法。是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表明这一方法的概率统计特征,故借用赌城蒙特卡罗命名。 下面将采用该方法计算圆周率: import numpy as np def p...原创 2019-06-28 11:47:59 · 21452 阅读 · 0 评论 -
Python_算法实现_(2)二分查找
二分查找也被称为折半查找,是在一个有序数组中查找特定元素位置的查找算法。二分查找要求查找序列采用顺序存储,且按关键字有序排列。 二分查找是最为常见的一种算法(后面回介绍其他的几种查找和排序算法),实现一个完美的二分查找是有一定的难度的,要充分考虑到它的退出条件和中间点的计算。 算法处理思路 前提:列表已经完成排序 从中间元素开始搜索。如果正好是要搜索元素,则搜索结束。 如果不等,则在大于或者小于...原创 2019-06-28 11:05:35 · 21220 阅读 · 0 评论 -
Python_算法实现_(1)递归汉诺塔
11原创 2019-06-07 17:03:19 · 21069 阅读 · 0 评论