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)

结果如下:

原文地址:https://www.cnblogs.com/dflblog/p/11357925.html