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、冒泡、二分法的更多相关文章

  1. vue源码逐行注释分析+40多m的vue源码程序流程图思维导图 (diff部分待后续更新)

    vue源码业余时间差不多看了一年,以前在网上找帖子,发现很多帖子很零散,都是一部分一部分说,断章的很多,所以自己下定决定一行行看,经过自己坚持与努力,现在基本看完了,差ddf那部分,因为考虑到自己要换 ...

  2. 9月19日下午JavaScript数组冒泡排列和二分法

    数组 一.冒泡排列 对数组attr = [1,8,6,4,5,3,7,2,9]进行由大到小排列,用冒泡排列的方法排列时,会对数组进行比较互换.如果前一个数字较大,这2个元素排列方式不变,如果后一个元素 ...

  3. Python函数练习:冒泡算法+快速排序(二分法)

    冒泡算法: #-*- coding: UTF-8 -*-#冒泡排序 def func(lt):if type(lt).__name__ !='list' and type(lt).__name__ ! ...

  4. 【Java基础】选择排序、冒泡法排序、二分法查找

    1.选择排序: //改进后的选择排序,减少交换的次数 public static void sortSelect(int arr[]) { //用于存放最小数的下标 int s; for (int i ...

  5. python 内置函数,匿名函数,sorted,filter,map,递归,二分法,冒泡算法 eval

    ############################总结#################################1. lambda 匿名函数 语法——lambda 参数:返回值 __na ...

  6. day10 python算法 冒泡算法 二分法 最快查找算法 c3算法

    day10 python       1.冒泡算法         冒泡排序,把列表竖起来看,就像一个个气泡往上去(时间复杂度大) lst = [12,3,3,2424,14,3567,534,324 ...

  7. iOS常见算法(二分法 冒泡 选择 快排)

    二分法: 平均时间复杂度:O(log2n) int halfFuntion(int a[], int length, int number)  { int start = 0; int end = l ...

  8. JaveScript用二分法与普通遍历(冒泡)

    二分法 查找 概念: 从有序的数列中,折半查找. 思路: --> 找到数组中最中间的元素,将其作为基准 --> 从0开始判断数组中的元素,与基准进行比较 --> 比基准小的元素,存入 ...

  9. Java冒泡法和二分法

    最近去一家公司面试,手贱在人家CTO面前自告奋勇写了一把冒泡法,结果在交换数据的时候出了洋相,回家反思,写下如下代码,对自己算是一个鞭策,得到的教训是不要眼高手低,低调前行. package com. ...

随机推荐

  1. 1682: [Usaco2005 Mar]Out of Hay 干草危机

    1682: [Usaco2005 Mar]Out of Hay 干草危机 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 391  Solved: 258[ ...

  2. [SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式

    SQL 基础知识梳理(六)-  函数.谓词.CASE 表达式 目录 函数 谓词 CASE 表达式 一.函数 1.函数:输入某一值得到相应输出结果的功能,输入值称为“参数”,输出值称为“返回值”. 2. ...

  3. ES6是什么

    编程语言JavaScript是ECMAScript的实现和扩展,由ECMA(一个类似W3C的标准组织)参与进行标准化.编程语言JavaScript是ECMAScript的实现和扩展,由ECMA(一个类 ...

  4. JavaScript高级程序设计(学习)

    文档模式是:混杂模式和标准模式. 若在文档开始处没有文档类型声明,则浏览器就会开启混杂模式.这种模式在不同的浏览器下行为差异非常大,如果不使用某些hack技术,跨浏览器的行为根本就没有一致性可言. 局 ...

  5. SQLServer 数据库不能重命名的解决方案

    无法用排他锁锁定该数据库,以执行该操作 SQL Server2008 因为可能其他用户在占用着该数据库 解决办法为 把数据库先改为单用户的,再改数据库名,再改回多用户的 USE [master] GO ...

  6. 分类算法——k最近邻算法(Python实现)(文末附工程源代码)

    kNN算法原理 k最近邻(k-Nearest Neighbor)算法是比较简单的机器学习算法.它采用测量不同特征值之间的距离方法进行分类,思想很简单:如果一个样本在特征空间中的k个最近邻(最相似)的样 ...

  7. 服务器证书安装配置指南(SLB)

    一.生成证书请求  1.下载CSR生成工具 您需要使用CSR生成工具来创建证书请求.  下载AutoCSR: http://www.itrus.cn/soft/autocsr.rar  2.生成服务器 ...

  8. Java之路——环境配置与编译运行

    本文大纲 一.开篇 二.JDK下载 三.JDK安装 四.环境配置 五.初识Java编译 六.Java与Javac 七.第一个Java程序 八.总结 九.参考资料 一.开篇 通过对之前Java之路的了解 ...

  9. 无线接收信号强度(RSSI)那些事儿

    本文由嵌入式企鹅圈原创团队成员黄鑫供稿. 本文所述的原理适用于所有无线传输技术,只是用蓝牙来举例.应该说,嵌入式企鹅圈更加偏重于嵌入式和物联网.安卓技术原理方面的知识分享和传播,其次才是实践,尽管很多 ...

  10. css基本布局

    一.一列布局 关键代码: {              width:960;         margin:0 auto: } 代码: 运行结果:     分析:以上代码实现一列布局,头部占整个浏览器 ...