zoukankan      html  css  js  c++  java
  • 算法(插入、希尔、冒泡)

    算法学习技巧
    
    先问自己几个问题
    是什么? 为什么要这么写? 稳定性? 时间复杂度? 冒泡排序 是什么:首先拿到第1个元素,和它第二个比较,较大的放右边;第二个与第三个比,一直重复下去 ,最后一个就是最大的数 为什么:总共有n个数,主要是控制轮数,第二个是控制次数。比的次数 为:n
    -1 稳定性: 时间复杂度 方法一: def Bubble(arr): for i in range(len(arr)): for j in range(len(arr)-1-i): if arr[j]>arr[j+1]: arr[j],arr[j+1]=arr[j+1],arr[j] return arr arr=[9,3,6,2,0,6] print(Bubble(arr)) >>> arr=[9,3,6,2,0,6] >>> print(Bubble(arr)) [0, 2, 3, 6, 6, 9] 方法二: def Bubble(arr): i=0 while i<len(arr): print("当前为第%s轮"%i+"***********************************") for j in range(len(arr)-1-i): if arr[j]>arr[j+1]: arr[j],arr[j+1]=arr[j+1],arr[j] print("当前的值得为:",(arr[j],arr[j+1])) i+=1 return arr arr=[9,3,6,2,0,6] print(Bubble(arr))
    >>> def Bubble(arr):
    ...     i=0
    ...     while i<len(arr):
    ...         print("当前为第%s轮"%i+"***********************************")
    ...         for j in range(len(arr)-1-i):
    ...             if arr[j]>arr[j+1]:
    ...                 arr[j],arr[j+1]=arr[j+1],arr[j]
    ...                 print("当前的值得为:",(arr[j],arr[j+1]))
    ...         i+=1
    ...     return arr
    ...
    >>> arr=[9,3,6,2,0,6]
    >>> print(Bubble(arr))
    当前为第0轮***********************************
    当前的值得为: (3, 9)
    当前的值得为: (6, 9)
    当前的值得为: (2, 9)
    当前的值得为: (0, 9)
    当前的值得为: (6, 9)
    当前为第1轮***********************************
    当前的值得为: (2, 6)
    当前的值得为: (0, 6)
    当前为第2轮***********************************
    当前的值得为: (2, 3)
    当前的值得为: (0, 3)
    当前为第3轮***********************************
    当前的值得为: (0, 2)
    当前为第4轮***********************************
    当前为第5轮***********************************
    [0, 2, 3, 6, 6, 9]
    
    

    插入排序 方法一
    def insertSort(arr): for i in range(1,len(arr)): for j in range(i,0,-1): if arr[j-1]>arr[j]: arr[j-1],arr[j]=arr[j],arr[j-1] return arr arr=[9,3,6,2,0,6] print(insertSort(arr)) ... >>> arr=[9,3,6,2,0,6] >>> print(insertSort(arr)) [0, 2, 3, 6, 6, 9] >>> 方法二 def insertSort(arr): for i in range(1,len(arr)): for j in range(0,i): if arr[j]>arr[i]:#这里j的位置比I要前面,因为i是从0开始 arr[j],arr[i]=arr[i],arr[j] return arr arr=[9,3,6,2,0,6] print(insertSort(arr)) >>> arr=[9,3,6,2,0,6] >>> print(insertSort(arr)) [0, 2, 3, 6, 6, 9] >>> 方法三: def insertSort(arr): i=1 while i<len(arr): value=arr[i] j=i-1 while j>=0: if arr[j]>value:#这里j的位置比I要前面,因为i是从0开始 arr[j+1],arr[j]=arr[j],arr[j+1] j-=1 i+=1 return arr arr=[9,3,6,2,0,6] print(insertSort(arr)) >>> arr=[9,3,6,2,0,6] >>> print(insertSort(arr)) [0, 2, 3, 6, 6, 9]

    冒泡排序
    冒泡排序改进算法,时间复杂度O(n^2)
  • 相关阅读:
    windows下cmd清屏命令cls
    mac电脑复制粘贴使用command+c command+v
    Git从远程仓库里拉取一条本地不存在的分支方法
    react系列笔记1 用npx npm命令创建react app
    golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息
    golang学习笔记9 beego nginx 部署 nginx 反向代理 golang web
    golang学习笔记8 beego参数配置 打包linux命令
    获取某一天所在周的开始日期和结束日期
    某一日期所在月份的天数
    获取某一日期所在月份的第一天日期或最后一天日期
  • 原文地址:https://www.cnblogs.com/hzyimen/p/12359492.html
Copyright © 2011-2022 走看看