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)

    结果如下:

  • 相关阅读:
    .net remoting 易则易知,简则易从
    委托和匿名方法学习心得
    (4)插入排序之二 折半插入排序
    (2)排序概述
    (3)插入排序之一 直接插入排序
    (5)插入排序之三 2路插入排序
    (9)交换排序之二 快速排序
    (7)插入排序之五 希尔排序
    (6)插入排序之四 表插入排序
    (8)交换排序之一 起泡排序
  • 原文地址:https://www.cnblogs.com/dflblog/p/11357925.html
Copyright © 2011-2022 走看看