python基础知识10---算法
一.递归
程序本身自己调用自己称之为递归,类似于俄罗斯套娃,体现在代码中:用户执行最外(N)层函数,最外侧调用N-1层函数,N-1层函数调用N-2层函数...
利用函数编写如下数列:
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368
def func(arg1,arg2):
if arg1 == 0:
print arg1, arg2
arg3 = arg1 + arg2
print arg3
func(arg2, arg3) func(0,1) Demo
demo
二.冒泡排序
冒泡排序是排序中经典排序之一,它利用相邻元素比较并进行位置的互换...
需求:请按照从小到大对列表 [13, 22, 6, 99, 11] 进行排序
思路:相邻两个值进行比较,将较大的值放在右侧,依次比较!
li = [13, 22, 6, 99, 11] for m in range(4): # 等价于 #for m in range(len(li)-1):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp 第一步
第一步
li = [13, 22, 6, 99, 11] for m in range(4): # 等价于 #for m in range(len(li)-1):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp for m in range(3): # 等价于 #for m in range(len(li)-2):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp for m in range(2): # 等价于 #for m in range(len(li)-3):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp for m in range(1): # 等价于 #for m in range(len(li)-4):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp
print li 第二步
第二步
li = [13, 22, 6, 99, 11] for i in range(1,5):
for m in range(len(li)-i):
if li[m] > li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp 第三步
第三步
三.选择排序
选择排序,顾名思义先 创建一个特殊的变量:
- 选择第一个值的索引赋值给特殊变量,然后循环其他索引并进行值的比较,如果特殊变量对应的值 > 循环的值,那么将当前值的索引放入变量中,继续向后比较
- 选择第二个值的索引赋值给特殊变量,...
- ...
def select_sort(args):
"""
选择排序
:param args: 要进行排序的列表
:return: 排序之后的列表
"""
for j in range(0, len(args)-1): min_val_index = j
for i in range(j+1, len(args)):
if args[i] < args[min_val_index]:
min_val_index = i temp = args[min_val_index]
args[min_val_index] = args[j]
args[j] = temp return args lis = [10, 77, 12, 43, 88, 1, 8, 8, 2, 3, 6] result = select_sort(lis) print(result)
四.插入排序
插入排序有两个特点:
- 从前向后两两比较
- 永远保证左边是有序的
其实插入排序就是维护一个有序的序列,并且有一个人在不停的抛出新的值,然后有序的序列开始去检测新值,将其添加到有序序列中的合法位置
def insert_sort(args):
"""
插入排序
:param args: 要排序的列表
:return: 排序成功后的列表
"""
for i in range(1, len(args)): for j in range(i-1, -1, -1):
if args[j] > args[j+1]:
temp = args[j]
args[j] = args[j+1]
args[j+1] = temp
else:
break return args
。。。
def
select_sort(args):
"""
选择排序
:param args: 要进行排序的列表
:return: 排序之后的列表
"""
for
j
in
range
(
0
,
len
(args)
-
1
):
min_val_index
=
j
for
i
in
range
(j
+
1
,
len
(args)):
if
args[i] < args[min_val_index]:
min_val_index
=
i
temp
=
args[min_val_index]
args[min_val_index]
=
args[j]
args[j]
=
temp
return
args
lis
=
[
10
,
77
,
12
,
43
,
88
,
1
,
8
,
8
,
2
,
3
,
6
]
result
=
select_sort(lis)
print
(result)
python基础知识10---算法的更多相关文章
- Python 基础知识(一)
1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...
- python基础知识的学习和理解
参考链接:https://github.com/yanhualei/about_python/tree/master/python_learning/python_base python基础知识笔 ...
- Python基础知识(五)------字典
Python基础知识(四)------字典 字典 一丶什么是字典 dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 键: 必须是可哈希,(不可变的数据类型 ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- python 基础知识(一)
python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...
- python基础知识小结-运维笔记
接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...
- python基础知识部分练习大全
python基础知识部分练习大全 1.执行 Python 脚本的两种方式 答:1.>>python ../pyhton.py 2. >>python.py #必须在首行 ...
- Python 入门之Python基础知识
Python 入门之Python基础知识 1.变量 (1)变量就是把程序运行的中间结果临时存在内存中,以便后续代码使用 (2)变量的作用: 昵称,就是代指内存中某个地址中的内容 a = 123 变量名 ...
- Python基础知识总结笔记(四)函数
Python基础知识总结笔记(四)函数python中的函数函数中的参数变量作用域偏函数PFA递归函数高阶函数BIFs中的高阶函数匿名函数lambda闭包Closure装饰器Decorator函数式编程 ...
- Python基础知识详解 从入门到精通(七)类与对象
本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...
随机推荐
- svg 高宽随父元素自适应
<html lang="en"> <head> <meta charset="UTF-8"> <meta name=& ...
- Hadoop学习------Hadoop安装方式之(一):单机部署
Hadoop 默认模式为单机(非分布式模式),无需进行其他配置即可运行.非分布式即单 Java 进程,方便进行调试. 1.创建用户 1.1创建hadoop用户组和用户 一般我们不会经常使用root用户 ...
- Python web框架对比
- SpringBoot的学习【6.YML 和 Properties 的语法】
1.YML的基本语法 KEY:(空格)value:(空格) 以空格的缩进来表示同一层级.属性和值是大小写敏感的. 2.YML和属性.属性值进行匹配 注解:@ConfigurationPropertie ...
- TFS2015安装、配置
一.安装,参考:http://www.cnblogs.com/WilsonWu/archive/2011/11/24/2261674.html 二.配置,参考:http://www.cnblogs.c ...
- java2周来的一些心得和体会
1.首先,在开发的一开始,可以将绝大多数rest可能提交过来字段先抽离出来,做成一个基础类. 然后再继承这个类,这样做的好处是业务就被分开了,谁也不会影响到谁. 2.在maven当中,需要修改自己的类 ...
- struts2+mybatis3+log4j2+bulma+mysql8元工程
https://pan.baidu.com/s/1Z1YklkKEKrzhS7uM9w6ewQ https://pan.baidu.com/s/1Z1YklkKEKrzhS7uM9w6ewQ
- 【EMV L2】GPO响应以及AIP、AFL
[GPO命令] 终端通过GPO(Get Processing Options)命令 通知卡片交易开始.命令数据为PDOL指定的终端数据. [GPO响应] 卡片在GPO命令的响应中返回AIP和AFL:A ...
- JavaScript语言里判断一个整数,属于哪个范围:大于0;小于0;等于0
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Qt实现 动态化遍历二叉树(前中后层次遍历)
binarytree.h 头文件 #ifndef LINKEDBINARYTREE_H #define LINKEDBINARYTREE_H #include<c++/algorithm> ...