python算法

Python基础排序算法之插入排序

十年热恋 提交于 2020-01-31 06:49:48
插入排序 插入排序(Insertion Sort)的基本思想是:将列表分为2部分,左边为排序好的部分,右边为未排序的部分,循环整个列表,每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。 算法分析 (1)时间复杂度 插入排序的时间复杂度为O(n^2) (2)空间复杂度 插入排序的空间复杂度为O(1) 算法特点 1.稳定排序 2.因为要进行折半查找,所以只能用于顺序结构,不能用于链式结构。 2适合初始记录无序,n较大时的情况。 程序示例: "" " 题目 : 插入排序 作者:假书生@ version : 1.0 date : 2020.01 .30 "" " import random # 导入random模块,用来生成随机数列 import time def Insertion_sort ( array ) : # 定义排序函数 for i in range ( 1 , len ( array ) ) : position = i # 刚开始往左边走的第一个位置 current_val = array [ i ] # 先把当前值存下来 while position > 0 and current_val < array [ position - 1 ] : # 当下标大于 0 并且该值小于前一个值时,进入循环 array [

python 十大装B语法

℡╲_俬逩灬. 提交于 2020-01-31 03:30:17
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才是原配吗?No,你可能不知道,else 是个脚踩两只船的家伙,for 和 else 也是一对,而且是合法的。十大装B语法,for-else 绝对算得上南无湾!不信,请看: >>> for i in [1,2,3,4]: print(i) else: print(i, '我是else') 4 我是else 如果在 for 和 else 之间(循环体内)有第三者 if 插足,也不会影响 for 和 else 的关系。因为 for 的级别比 if 高,else 又是一个攀附权贵的家伙,根本不在乎是否有 if,以及是否执行了满足 if 条件的语句。else 的眼里只有 for,只要 for 顺利执行完毕,else 就会屁颠儿屁颠儿地跑一遍: >>> for i in [1,2,3,4]: if i > 2: print(i) else: print(i, '我是else') 4 我是else 那么

A*算法python编写迷宫问题

北城以北 提交于 2020-01-30 23:43:41
题目 假设一个探险家被困在了地底的迷宫之中,要从当前位置开始找到一条通往迷宫出口的路径。迷宫可以用一个二维矩阵组成,有的部分是墙,有的部分是路。迷宫之中有的路上还有门,每扇门都在迷宫的某个地方有与之匹配的钥匙,只有先拿到钥匙才能打开门。请设计一个算法,帮助探险家找到脱困的最短路径。如前所述,迷宫是通过一个二维矩阵表示的,每个元素的值的含义如下 0-墙,1-路,2-探险家的起始位置,3-迷宫的出口,大写字母-门,小写字母-对应大写字母所代表的门的钥匙 输入描述: 迷宫的地图,用二维矩阵表示。第一行是表示矩阵的行数和列数M和N 后面的M行是矩阵的数据,每一行对应与矩阵的一行(中间没有空格)。M和N都不超过100, 门不超过10扇。 输出描述: 路径的长度,是一个整数 示例1 输入 复制 5 5 02111 01a0A 01003 01001 01111 输出 复制 7解题思路:这道题为了练习A*算法。题目里加了钥匙和门,我按照 一把钥匙对一扇门,一定要找一把钥匙过一扇门,的顺序写的。最后的思路就是 从起点找 到第一把钥匙的路,然后找从第一把钥匙到第一扇门的路,然后找第一扇门到第二把钥匙的路依次类推。把每一次寻路,都用A*算法来求解。 #读取输入数据 hh=input() # hh='5 5 021b1 01A0B 01003 0a000 01111'# hh='5 5 02111

Python环境搭建-1 Python介绍

北战南征 提交于 2020-01-30 18:21:51
Python翻译成汉语是蟒蛇的意思,并且Python的logo也是两条缠绕在一起的蟒蛇的样子,然而Python语言和蟒蛇实际上并没有一毛钱关系。 Python语言是由荷兰程序员Guido van Rossum,江湖人称“龟叔”,独立开发完成初版的。“龟叔”曾供职于google,现任职于dropbox 。1989年圣诞节期间,在阿姆斯特丹,为了打发圣诞节的无趣,决心开发一个新的脚本解释语言,作为ABC语言的一种继承,然后他就这么做了,并实现了(大神的能力)。之所以选中Python作为该编程语言的名字,是因为他是一个叫Monty Python喜剧团体的爱好者,其本意并不是想选条蟒蛇。 Python语言的特点 简单易学、明确优雅、开发速度快 简单易学:与C和Java比,Python的学习成本和难度曲线不是低一点,更适合新手入门,自底向上的技术攀爬路线。先订个小目标爬个小山,然后再往更高的山峰前进。而不像C和JAVA光语言学习本身,对于很多人来说就像珠穆朗玛峰一样高不可攀。 明确优雅:Python的语法非常简洁,代码量少,非常容易编写,代码的测试、重构、维护等都非常容易。一个小小的脚本,用C可能需要1000行,用JAVA可能几百行,但是用Python往往只需要几十行! 开发速度快:当前互联网企业的生命线是什么?产品开发速度!如果你的开发速度不够快,在你的产品推出之前别人家的产品已经上线了

python_矩阵转置

百般思念 提交于 2020-01-30 09:46:10
矩阵转置 """ 矩阵转置 算法:将list01中每列,存储到list02中每行 """ list01 = [ [ 1 , 2 , 3 , 4 ] , [ 5 , 6 , 7 , 8 ] , [ 9 , 10 , 11 , 12 ] , ] list02 = [ ] for c in range ( len ( list01 [ 0 ] ) ) : line = [ ] for r in range ( len ( list01 ) ) : line . append ( list01 [ r ] [ c ] ) list02 . append ( line ) print ( list02 ) 来源: CSDN 作者: 李富贵︴ 链接: https://blog.csdn.net/weixin_46198526/article/details/104108245

Python十大语法

喜欢而已 提交于 2020-01-30 07:57:03
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 for - else 什么?不是 if 和 else 才是原配吗?No,你可能不知道,else 是个脚踩两只船的家伙,for 和 else 也是一对,而且是合法的。十大装B语法,for-else 绝对算得上南无湾!不信,请看: for i in [1,2,3,4]: print(i) else: print(i, ‘我是else’) 1 2 3 4 4 我是else 1 2 3 4 5 6 7 8 9 10 如果在 for 和 else 之间(循环体内)有第三者 if 插足,也不会影响 for 和 else 的关系。因为 for 的级别比 if 高,else 又是一个攀附权贵的家伙,根本不在乎是否有 if,以及是否执行了满足 if 条件的语句。else 的眼里只有 for,只要 for 顺利执行完毕,else 就会屁颠儿屁颠儿地跑一遍: for i in [1,2,3,4]: if i > 2: print(i) else: print(i,

快速排序算法及python实现

会有一股神秘感。 提交于 2020-01-29 09:49:38
快速排序基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 如序列[6,8,1,4,3,9],选择6作为基准数。从右向左扫描,寻找比基准数小的数字为3,交换6和3的位置,[3,8,1,4,6,9],接着从左向右扫描,寻找比基准数大的数字为8,交换6和8的位置,[3,6,1,4,8,9]。重复上述过程,直到基准数左边的数字都比其小,右边的数字都比其大。然后分别对基准数左边和右边的序列递归进行上述方法。 实现代码如下: 1 def parttion(v, left, right): 2 key = v[left] 3 low = left 4 high = right 5 while low < high: 6 while (low < high) and (v[high] >= key): 7 high -= 1 8 v[low] = v[high] 9 while (low < high) and (v[low] <= key): 10 low += 1 11 v[high] = v[low] 12 v[low] = key 13 return low 14 def quicksort(v, left, right):

一网打尽!数据科学领域最好的免费电子书汇总

﹥>﹥吖頭↗ 提交于 2020-01-29 04:41:47
全文共 4912 字,预计学习时长 15 分钟 图源:Unsplash 新年到,又到了给自己定制新年目标的时候了。今年,你打算给自己树什么样的flag,不,是目标呢? 多读书多看报,少吃零食多睡觉? 要么读书,要么旅行,身体和灵魂总有一个在路上? 对于每个人来说,书都是必不可少的精神食粮。 读书=充电。 今天,小芯就为大家整理了25本数据科学领域最好的免费电子书。这25本书中的每一本不是由数据科学先驱、导师、指导者推荐给小芯的,就是小芯在做某个特定项目时参考过的。相信会给大家带来很大的帮助! 因为很多小伙伴都在学习Python,为此,这次整理的大多数书籍都是基于Python的编程。 一、数据科学非技术导论 •Roger D.Peng和Elizabeth Matsui的《数据科学艺术》(The Art of Data Science) 简介:这本书描述了分析数据的过程。作者在管理数据分析师和进行自己的数据分析方面都有着丰富经验,这本书以适用于从业人员和管理人员的方式,总结了他们的经验。 •卡尔、麦克斯、亨利和威尔的《数据科学手册》(Data Science Handbook) 简介:《数据科学手册》是对25位杰出的数据科学家进行深入访谈的汇编,他们在本书中分享了自己的见解、故事和建议。 •RogerD.Peng和Hilary Parker《数据科学的对话》(Conversations

Python排序算法之快速排序

℡╲_俬逩灬. 提交于 2020-01-28 03:56:06
转自:https://www.cnblogs.com/AlwinXu/p/5424905.html 快速排序(quickSort) 快排的思想:首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。 百度百科给的算法: 一趟快速排序的算法是: 1)设置两个变量i、j, 排序 开始的时候:i=0,j=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即key=A[0]; 3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换; 4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换; 5)重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。 时间复杂度:O(nlgn) #QuickSort by Alvin def QuickSort(myList,start,end): #判断low是否小于high,如果为false

数据科学的完整学习路径(Python版)

我只是一个虾纸丫 提交于 2020-01-27 23:59:52
转载自: http://python.jobbole.com/80981/ 英文(原文)连接:https://www.analyticsvidhya.com/learning-paths-data-science-business-analytics-business-intelligence-big-data/learning-path-data-science-python/ 从Python菜鸟到Python Kaggler的旅程(译注: Kaggle 是一个数据建模和数据分析竞赛平台) 假如你想成为一个数据科学家,或者已经是数据科学家的你想扩展你的技能,那么你已经来对地方了。本文的目的就是给数据分析方面的Python新手提供一个完整的学习路径。该路径提供了你需要学习的利用Python进行数据分析的所有步骤的完整概述。如果你已经有一些相关的背景知识,或者你不需要路径中的所有内容,你可以随意调整你自己的学习路径,并且让大家知道你是如何调整的。 步骤0:热身 开始学习旅程之前,先回答第一个问题:为什么使用Python?或者,Python如何发挥作用? 观看DataRobot创始人Jeremy在PyCon Ukraine 2014上的 30分钟演讲 ,来了解Python是多么的有用。 步骤1:设置你的机器环境 现在你已经决心要好好学习了,也是时候设置你的机器环境了