zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    【ExtJS】关于自定义组件(一)
    【ExtJS】关于自定义组件
    特殊的css样式
    样式表笔记
    html 表单笔记
    图片热点和网页内嵌随笔
    快速网页
    HTML基础和表格
    HTML基础
    递归算法 笔记
  • 原文地址:https://www.cnblogs.com/amesy/p/6781750.html
Copyright © 2011-2022 走看看