python手写经典算法详解(一)的源码

我有一篇十分详细!python手写经典算法详解(一)的博客,访问量挺大的,也有不少人收藏了。因此,我决定将源码清晰地写在这里。

文章目录

  • 冒泡排序
  • 选择排序
  • 插入排序
  • 线性查找
  • 二分查找

冒泡排序

def Bubble(arr):
    for n in range(len(arr)-1):
        for x in range(0,len(arr)-1-n):
            a = arr[x]
            b = arr[x+1]
            if a>b:
                arr[x],arr[x+1]=arr[x+1],arr[x]
    return arr

选择排序

def FindMinNum(arr):
    minIndex = 0
    for x in range(0,len(arr)):
        if arr[x]<arr[minIndex]:
            minIndex = x
    return minIndex
    
def Selection(arr):
    for x in range(0,len(arr)):
        a = FindMinNum(arr[x:])		#已经排好序的数后面
        arr[a+x],arr[x] = arr[x],arr[a+x]	#交换
    return arr

插入排序

def insertSort(arr):
    for x in range(1,len(arr)):
        while x>0:
            if arr[x]<arr[x-1]:
                arr[x],arr[x-1] = arr[x-1],arr[x]
                x -= 1
            else:
                break
    return arr

线性查找

def Linear(arr,number):
    for x in range(0,len(arr)):
        if arr[x]==number:
            return x

二分查找

def Binary(arr,number):
    while True:
        m = int((l+r)/2)     #Middle index
        n = arr[m]  #Middle number
        if number==n:
            return m
        if number > n:
            l = m
        if number < n:
            r = m

你可能感兴趣的:(python手写经典算法详解(一)的源码)