一.递归

程序本身自己调用自己称之为递归,类似于俄罗斯套娃,体现在代码中:用户执行最外(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---算法的更多相关文章

  1. Python 基础知识(一)

    1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...

  2. python基础知识的学习和理解

    参考链接:https://github.com/yanhualei/about_python/tree/master/python_learning/python_base   python基础知识笔 ...

  3. Python基础知识(五)------字典

    Python基础知识(四)------字典 字典 一丶什么是字典 ​ dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 ​ 键: 必须是可哈希,(不可变的数据类型 ...

  4. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  5. python 基础知识(一)

    python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...

  6. python基础知识小结-运维笔记

    接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...

  7. python基础知识部分练习大全

    python基础知识部分练习大全   1.执行 Python 脚本的两种方式 答:1.>>python ../pyhton.py 2. >>python.py   #必须在首行 ...

  8. Python 入门之Python基础知识

    Python 入门之Python基础知识 1.变量 (1)变量就是把程序运行的中间结果临时存在内存中,以便后续代码使用 (2)变量的作用: 昵称,就是代指内存中某个地址中的内容 a = 123 变量名 ...

  9. Python基础知识总结笔记(四)函数

    Python基础知识总结笔记(四)函数python中的函数函数中的参数变量作用域偏函数PFA递归函数高阶函数BIFs中的高阶函数匿名函数lambda闭包Closure装饰器Decorator函数式编程 ...

  10. Python基础知识详解 从入门到精通(七)类与对象

    本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...

随机推荐

  1. docker 容器跑一个应用

    虽然是个前端,但是公司比较推崇docker,感觉挺神奇,就也学了一些,再此做个笔记,以供日后回想. 我的想法是在一个centos环境中运行一个nginx服务.docker的安装就不说了,网上已经有好多 ...

  2. Matlab R2015b_@Ubuntu 16_安装备忘

    1.下载解压包解压 2.cd 进入文件夹,使用 sh 打开,安装过程中不要使用“网络激活” 3.mv Crack文件中的 /R2015b/bin/glnxa64 里面的三个lib*.so 到Matla ...

  3. classLoader和Class.forName的区别

    public class ClassLoaderOrClassForName{ public static void main(String[] args) throws ClassNotFoundE ...

  4. EL(Expression Language)表达式语言

    EL(Expression Language)表达式语言 EL的基本语法是以${开始,以}结束 为了能够方便地输出数据,EL提供了11个内置对象,其中 2个内置对象为了方便输出请求参数 param用来 ...

  5. 【leetcode】492. Construct the Rectangle

    problem 492. Construct the Rectangle 参考 1. Leetcode_492. Construct the Rectangle; 完

  6. scrapy输出的json文件中显示中文

    scrapy用-o filename.json 输出时,会默认使用unicode编码,当内容为中文时,输出的json文件不便于查看,如下图: 可以在setting.py文件中修改默认的输出编码方式,只 ...

  7. Pycharm 常用快捷键与设置

    pycharm高频率使用的快捷键 Ctrl+Shift+F10 运行当前的页面 Ctrl + / 注释(取消注释)选择的行 Ctrl+Shift+F 高级查找 Shift + Enter 开始新行 T ...

  8. 在java代码中控制UI界面

    public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle saved ...

  9. 2018.5.17 memcached

    简介 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. 安装 yum install memcached 连接 telnet HOST PORT telnet 127.0.0.1 ...

  10. vue day5 分页控件 更新 PagedList.mvc 仿

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...