python周报第六周

1.初识算法

1.冒泡排序

冒泡排序算法的原理如下:(从后往前)
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

冒泡算法初级代码如下:

 1 ##冒泡
 2 a=[9,2,1,55,33]
 3
 4 for i in range(len(a)):
 5     for j in range(len(a)-1):
 6         if a[j] > a[j+1]:
 7             middle = a[j]
 8             a[j] = a[j+1]
 9             a[j+1] = middle
10         else:
11             pass
12
13 print(a)

执行结果如下:

[1, 2, 9, 33, 55]

代码剖析:开始执行:初始列表a=[9,2,1,55,33],第一次外层循环i=0;第一次内层循环j=0;假如a[0]:9 > a[1]:2,交换位置,a[0]:2;a[1]:9,第二次内层循环j=1;假如a[1]:9 > a[2]:1,交换位置,第三次内层循环j=2;假如a[2]:9 > a[3]:55,不成立;pass,第四次内层循环j=3;假如a[3]:55 > a[4]:33,交换位置,内层循环结束,得到结果a[4]==55,拿到第一大的值。第二次外层循环i=1;第一次内存循环j=0;假如a[0]:2 > a[1]:1,交换位置,第二次内层循环j=1;假如a[1]:2 > a[2]:9,不成立,pass,第三次内层循环j=2;假如a[2]:9> a[3]:33,不成立,pass,第四次内层循环j=3;假如a[3]:33 > a[4]:55,不成立,pass,拿到结果a[3] ==33,拿到第二大的值,以此类推。一个一个像冒泡一样拿到最终的列表。

2.选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下:

首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。

选择排序初级代码如下:

##选择
b = [8,2,1,55,33]
num = len(b)-1
for i in range(len(b)):
    index = 0
    for j in range(num):
        if b[index] > b[j+1]:
            pass
        else:
            index = j+1
    middle = b[num]
    b[num] = b[index]
    b[index] = middle
    num -= 1
print(b)

代码剖析:

时间: 2024-10-08 19:59:18

python周报第六周的相关文章

Python学习--第六周

本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗可以咬人,怎么描述这种不同的角色和他们的功能呢? 你搜罗了自己掌握的所有技能,写出了下面的代码来描述这两个角色 1 def person(name,age,sex,job): 2 data = { 3 '

python周报第七周

1.模块进阶 1. configparser [email protected]:~/PycharmProjects/s13/day7$ cat testfile [info1] name = liukai age1 = 19 [info2] name = lk age1 = 22

python周报第五周

1.装饰器进阶 -- 双层装饰器 先直接上代码,咱们在来分析. 1 USER_INFO = {} 2 3 def check_login(func): 4 def inner(*args,**kwargs): 5 if USER_INFO.get("is_login",None): 6 ret = func(*args,**kwargs) 7 return ret 8 else: 9 print("请登录") 10 return inner 11 12 13 def

python周报第三周

1.set 集合 1.set 方法解析 1.定义一个set s1 = "caesary" set1 = set(s1) print(set1) l1 = [1,2,3,4] set2 = set(l1) print(set2) t1 = (1,1,1,2,3) set3 = set(t1) print(set3) 执行结果如下 {'y', 'e', 's', 'r', 'c', 'a'} {1, 2, 3, 4} {1, 2, 3} 总结:set集合有去重功能,类似awk数组:并且是无

2017-2018-2 20179215《网络攻防实践》第六周作业

2017-2018-2 20179215<网络攻防实践> 第六周学习总结 课本学习笔记 一.TCP/IP网络协议攻击 1.网络安全的属性:机密性 .完整性 .可用性 .真实性 .不可抵赖性 . 2.网络攻击的基本模式分为:截获(嗅探 与 监听) .中断(拒绝服务) .篡改(数据包篡改) .伪造(欺骗) . 3.TCP/IP网络协议栈在设计时采用了分层模型,分为:网络接口层 .互联层 .传输层 .应用层.每一层当中都有针对破坏网络安全属性为目的的攻击技术.每一层所涉及的主要协议: 网络接口层:以

机器学习第六周--机器学习重要概念补充

一.sklearn中的Pipeline串联用法 Python搭建机器学习模型时,Pipeline是一个加快效率的方法,主要介绍学习串联用法.Pipeline处理机制就像是把所有模型塞到一个管子里,然后依次对数据进行处理,得到最终的分类结果,例如模型一可以是一个数据标准化处理,模型二可以是特征选择模型或者特征提取模型,模型三可以是一个分类器或者预测模型.Pipeline就是把这三个模型(模型不一定非要三个,根据自己实际需要)塞到管子里合并成一个模型调用,其中最后一个模型一定要是估计器,例如分类器.

20145317《信息安全系统设计基础》第六周学习总结(1)

20145317<信息安全系统设计基础>第六周学习总结(1) 第四章 处理器体系结构 指令体系结构:一个处理器支持的指令和指令的字节级编码 4.1Y86指令集体系结构 Y86:包括定义各种状态元素.指令集和它们的编码.一组编程规范和异常事件处理. Y86程序中的每条指令都会读取或修改处理器状态的某些部分.Y86具体包括:8个程序寄存器.3个条件码ZF\SF\OF.程序计数器(PC) Y86用虚拟地址引用存储器位置. 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状态. 注意:条件

Python爬虫利器六之PyQuery的用法

前言 你是否觉得 XPath 的用法多少有点晦涩难记呢? 你是否觉得 BeautifulSoup 的语法多少有些悭吝难懂呢? 你是否甚至还在苦苦研究正则表达式却因为少些了一个点而抓狂呢? 你是否已经有了一些前端基础了解选择器却与另外一些奇怪的选择器语法混淆了呢? 嗯,那么,前端大大们的福音来了,PyQuery 来了,乍听名字,你一定联想到了 jQuery,如果你对 jQuery 熟悉,那么 PyQuery 来解析文档就是不二之选!包括我在内! PyQuery 是 Python 仿照 jQuery

20145222《信息安全系统设计基础》第六周学习总结(1)

20145222<信息安全系统设计基础>第六周学习总结(1) 第四章 处理器体系结构 指令体系结构:一个处理器支持的指令和指令的字节级编码 4.1Y86指令集体系结构 · Y86:包括定义各种状态元素.指令集和它们的编码.一组编程规范和异常事件处理. · Y86程序中的每条指令都会读取或修改处理器状态的某些部分.· Y86具体包括:8个程序寄存器.3个条件码ZF\SF\OF.程序计数器(PC) · Y86用虚拟地址引用存储器位置. 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状