zoukankan      html  css  js  c++  java
  • python之常见算法

    1、冒泡排序

    冒泡排序比较常见,面试很多都会问到这个算法,其原理比较简单,代码实现也很简单

    # 冒泡排序
    # 先定一个一个需要排序的列表
    l = [7,2,3,1,4,5,6,9,8]
    # 统计一下长度
    n = len(l)
    ## 先遍历所有元素
    for i in range(len(l)):
        ## 最后还剩多少个元素需要对比排序,因为本身自己不需要排序,所以-1,之前已经拍过多少个数字了,还剩下多少就需要把i也减去
        for j in range(n-i-1):
            ## 对比,如果当前的数字比后面的数字大,则对换
            if l[j] > l[j+1]:
                l[j],l[j+1] = l[j+1],l[j]
    print(l)

    结果为:


    2、二分算法
    二分算法是比较常见的一种算法,也是面试里面比较常问的一种算法,代码如下。

    def erfen(list1,num):
        headIndex = 0       ## 首索引
        endIndex = len(list1)-1         ## 结尾索引
        count = 0          ## 计数用
        while headIndex <= endIndex:       ## 循环查找
              midIndex = (headIndex+endIndex)//2    ## 每次重新赋值中间索引
              count +=1
              #if len(list1)%2 == 0:
              if num == list1[midIndex]:         ## 判断是否找到
                  print(f'查找 {num} 共计执行 {count} 次')
                  return num
              if num > list1[midIndex]:          ## 如果目标数字比中间索引的数值大,首索引则赋值为中间索引加一,加一是为了处理最后一个位置的数值
                  headIndex = midIndex +1
              if num < list1[midIndex]:          ## 如果目标数字比中间索引的数值小,末尾索引则赋值为中间索引减一,减一是为了处理开头位置的数值
                  endIndex = midIndex  -1
        else:
            print('没有找到这个数字')
            
    ## 这里测试一下
    l = [1,2,3,4,5,6,7,8,9,10]
    for i in range(1,11):
        erfen(l,i)

    结果如下:

  • 相关阅读:
    windows 根据端口查看进行PID 并杀掉进程
    Linux下安装mysql-5.7
    springcloud参考视频和源码笔记
    idea中配置热部署
    技术/方案实现目录
    系统功能设计产出模版
    JQuery点击行tr实现checkBox选中与未选中切换
    Java学习第一天
    ES6 记录
    微信小程序记录
  • 原文地址:https://www.cnblogs.com/dflblog/p/11357925.html
Copyright © 2011-2022 走看看