list、冒泡、二分法
1.遍历第一次,寻找最大值,并且记录最大值的索引max_index
2.list(dict,str)
伪代码:
if(是不是有饭吃):
如果是真 执行 (缩进)
else:
如果是假 执行
写代码学习过程
1.用草稿纸画一下思路
2.把草稿纸上的内容,写成伪代码
3.伪代码翻译成代码
list
list是有顺序的
表示方法: []
dict
dict没有顺序
{
'name':'reboot'
}
list的特点:
- 有序
- 通过索引获取值:列表[索引]
两个Python内置函数:
len(列表) 返回列表的长度
max() 最大值
min() 最小值
关于变量名:
- 不可以是list,len,max,min,del
删除列表元素:
- del删除元素(根据索引)
- list: 获取,删除,修改(直接赋值)
冒泡排序:
- 冒泡排序是一种典型的通过交换元素消除逆序的排序方法,是一种最简单的方法。
思路:
(1) 每一遍检查将一个最大的元素交换到最后的位置,一些较大元素向右移动,前一个for循环控制第一层元素,从0到7,即range(len(lst)),第二个for循环从1到range(1,len(lst)-i)遍历。
(2)从左到右比较相邻元素,前一个元素较小就交换。
(3)如果原始待排序序列本身有序,可以提前退出排序,设置flag标志,为 true时,退出循环。
例:
两种思路实现冒泡算法:
第一种:
arr=[3,6,2,5,1,32,4,7,33,99]
for i in range(len(arr)):
for j in range(len(arr)):
if arr[j] >arr[i]:
arr[j], arr[i] = arr[i], arr[j]
print arr
第二种:
arr=[3,6,2,5,1,32,4,7,33,99]
for i in range(1,len(arr)+1):
for j in range(len(arr)-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
print arr
第二种方法改进,加入flag标志:
arr = [3,6,2,5,1,32,4,7,33,99]
for i in range(1,len(arr)+1):
flag = True # 插入变量flag,来发现该list是否有序.
for j in range(len(arr)-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
flag = False
if flag: # 列表本来有序,故退出.
break
print arr
冒泡排序的特点:
复杂度 O(n^2)
稳定性
切片:
- 切片功能强大,可读性差
- 切片的原则:起点按照切片的方向上,找到重点
list的几个功能:
- append 没有返回值,修改原数组
- count 统计出现次数,返回值,不修改原数组
- extend 没有返回值,修改原数组
- index 没有找到值会报错,很少用
- insert (索引,插入的值),没有返回值,修改原数组.
- pop 可以理解为弹出,默认弹出最后一个返回,否则弹出给定索引的值
dict和json的区别
dict: 在python里是一种具体的数据结构
json: 是一种数据交换格式(标准)
二分法思想:一个排好序的list中,查找一个特定的值.
原理:每次都取一个middle值,与start值与end值作比较,直至取出最终的值。
例:
# arr = [1, 2, 3, 5, 23, 43, 65, 87, 90, 111, 232, 345, 2342, 2432, 3453,]
arr =range(10000)
start = 0
end = len(arr) - 1
res = 345 # 此为要查找的值.
count = 0
while True:
count += 1
mid = (start + end) / 2
if res < arr[mid]:
end = mid
elif res > arr[mid]:
start = mid
else:
print mid
break
print arr[mid], count
列表生成式:
格式:
[x for x in 内容]
[x for x in 内容 if 条件]
例:
date = {"name": "yangbin", "age": 20, "sex": "male"}
fields= ["name", "age", "sex"]
print "---"
print [date[fields] for fields in date]
list、冒泡、二分法的更多相关文章
- vue源码逐行注释分析+40多m的vue源码程序流程图思维导图 (diff部分待后续更新)
vue源码业余时间差不多看了一年,以前在网上找帖子,发现很多帖子很零散,都是一部分一部分说,断章的很多,所以自己下定决定一行行看,经过自己坚持与努力,现在基本看完了,差ddf那部分,因为考虑到自己要换 ...
- 9月19日下午JavaScript数组冒泡排列和二分法
数组 一.冒泡排列 对数组attr = [1,8,6,4,5,3,7,2,9]进行由大到小排列,用冒泡排列的方法排列时,会对数组进行比较互换.如果前一个数字较大,这2个元素排列方式不变,如果后一个元素 ...
- Python函数练习:冒泡算法+快速排序(二分法)
冒泡算法: #-*- coding: UTF-8 -*-#冒泡排序 def func(lt):if type(lt).__name__ !='list' and type(lt).__name__ ! ...
- 【Java基础】选择排序、冒泡法排序、二分法查找
1.选择排序: //改进后的选择排序,减少交换的次数 public static void sortSelect(int arr[]) { //用于存放最小数的下标 int s; for (int i ...
- python 内置函数,匿名函数,sorted,filter,map,递归,二分法,冒泡算法 eval
############################总结#################################1. lambda 匿名函数 语法——lambda 参数:返回值 __na ...
- day10 python算法 冒泡算法 二分法 最快查找算法 c3算法
day10 python 1.冒泡算法 冒泡排序,把列表竖起来看,就像一个个气泡往上去(时间复杂度大) lst = [12,3,3,2424,14,3567,534,324 ...
- iOS常见算法(二分法 冒泡 选择 快排)
二分法: 平均时间复杂度:O(log2n) int halfFuntion(int a[], int length, int number) { int start = 0; int end = l ...
- JaveScript用二分法与普通遍历(冒泡)
二分法 查找 概念: 从有序的数列中,折半查找. 思路: --> 找到数组中最中间的元素,将其作为基准 --> 从0开始判断数组中的元素,与基准进行比较 --> 比基准小的元素,存入 ...
- Java冒泡法和二分法
最近去一家公司面试,手贱在人家CTO面前自告奋勇写了一把冒泡法,结果在交换数据的时候出了洋相,回家反思,写下如下代码,对自己算是一个鞭策,得到的教训是不要眼高手低,低调前行. package com. ...
随机推荐
- 自定义 Layout布局 UICollectionViewLayout
from: http://www.tuicool.com/articles/vuyIriN 当我们使用系统自带的UICollectionViewFlowLayout无法实现我们的布局时,我们就可以 ...
- Octave Tutorial(《Machine Learning》)之第三课《数据计算》
第三课 Culculating Data 数据计算 矩阵计算 1.简单的四则运算 2.相乘除,乘方运算(元素位运算) ".*"为对应元素的相乘计算 "./"为对 ...
- 配置远程服务器,使hyper-v能够连接网络
一般远程服务器只有一个网卡和IP,如果你要在服务器上装虚拟机,那么要使虚拟机能够连接网络,必须要创建虚拟交换机. 如果创建虚拟交换机并桥接,那么就会改变IP地址,改变IP地址,就连接不上远程服务器.造 ...
- 修改jsp默认编码
新建一个jsp页面默认的PageEncoding属性是iso8859-1,但是要使用中文的话,就乱码了,下面是修改新建jsp默认编码的步骤.
- Java 异常处理 try catch finally throws throw 的使用和解读(一)
//最近的一个内部表决系统开发过程中,//发现对异常处理还存在一些模棱两可的地方,//所以想着整理一下//主要涉及到://1.try catch finally throws throw 的使用和解读 ...
- java封装的方法
java封装是由Java是面向对象程序设计语言的性质决定的,面向对象程序设计语言的三大特性之一就是封装.封装其实就是包装的意思,从专业的角度来看,就是把对象的所有组成部分组合在一起,保护私有属性. 如 ...
- C++ 头文件系列(exception)
内容概览 一图解百问,但是有些地方我们需要特别指出: 类型在这里指通过typedef重定义的,例如函数类型.指针类型等. exception_ptr 在标准中是未定义具体实现的,因此它可能是类也可能是 ...
- poptest老李谈动态口令原理
poptest老李谈动态口令原理 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908 ...
- 老李推荐:第14章9节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-遍历控件树查找控件
老李推荐:第14章9节<MonkeyRunner源码剖析> HierarchyViewer实现原理-遍历控件树查找控件 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员 ...
- Python Selenium设计模式-POM
前言 本文就python selenium自动化测试实践中所需要的POM设计模式进行分享,以便大家在实践中对POM的特点.应用场景和核心思想有一定的理解和掌握. 为什么要用POM 基于python s ...