我是靠谱客的博主 冷艳导师,最近开发中收集的这篇文章主要介绍数据结构中一些常用的算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.计算二项式系数(动态规划)

# coding:utf-8

# computing C(n,k)
def Binomial_coefficient(n,k):
    if k == 0 or k == n:
        result = 1
    else:
        result = Binomial_coefficient(n-1,k-1)+Binomial_coefficient(n-1,k)
    return result


print Binomial_coefficient(10,3)



2.Floyd算法

# coding:utf-8


# floyd
_ = float('inf')
a = [[0,_,3,_],[2,0,_,_],[_,7,0,1],[6,_,_,0]]


for k in range(4):
    for i in range(4):
        for j in range(4):
            if a[i][j] > a[i][k] + a[k][j]:
                a[i][j] = a[i][k] + a[k][j]
            else:
                pass



print a

3.背包问题

# coding:utf-8


# knapsack_problem
w = [2,1,3,2]
v = [12,10,20,15]
matrix = []
sub_lst = []
for i_i in range(5):
    for j_j in range(6):
        sub_lst.append(0)
    matrix.append(sub_lst)
    sub_lst = []


for i in range(1,5):
    for j in range(1,6):
        if j >= w[i-1]:
            matrix[i][j] = max(matrix[i-1][j],v[i-1]+matrix[i-1][j-w[i-1]])
        else:
            matrix[i][j] = matrix[i-1][j]
print matrix

4.用于计算最小公约数的Euclid算法

# coding:utf-8


# Euclid
def Euclid(m,n):
    while n != 0:
        r = m % n
        m = n
        n = r
    return m

print Euclid(60,24)



5.求一个一维数组中大小最接近的两个元素的差

# coding:utf-8


# minDistance
def minDistance(lst):
    dmin = float('inf')
    for i in range(len(lst)):
        for j in range(len(lst)):
            if i < j and abs(lst[i]-lst[j]) < dmin:
                dmin = abs(lst[i] - lst[j])
            else:
                pass
    return dmin


print minDistance([1,99,5,10,23,80])



6.计算一个十进制数转换为二进制数后的位数

# coding:utf-8


# calculate count of binary


# method1
def Binary(n):
    count = 1
    while n > 1:
        count += 1
        n = n / 2
    return count


print Binary(4)


# method2
def Binary2(n):
    if n == 1:
        return 1
    else:
        return Binary2(n/2)+1
print Binary2(4)

7. 选择排序

# coding:utf-8


# selection_sort
def swap(a,b):
    tmp = a
    a = b
    b = tmp
    return a,b


def Selection_Sort(lst):
    for i in range(len(lst)-1):
        min = i
        for j in range(1,len(lst)):
            if lst[j] < lst[min]:
                min = j
        lst[i],lst[min] = swap(lst[i],lst[min])
    return lst


print Selection_Sort([3,1,2])



8.冒泡排序

# coding:utf-8


# BubbleSort
def swap(a,b):
    tmp = a
    a = b
    b = tmp
    return a,b


def Bubble_sort(lst):
    for i in range(len(lst)-1):
        for j in range(len(lst)-1-i):
            if lst[j+1] < lst[j]:
                lst[j],lst[j+1] = swap(lst[j],lst[j+1])
    return lst


print Bubble_sort([3,1,2])

 

最后

以上就是冷艳导师为你收集整理的数据结构中一些常用的算法的全部内容,希望文章能够帮你解决数据结构中一些常用的算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部