python学习12-算法

算法:解决问题的步骤
算法+数据结构=程序

算法1:查找,移除,查找,寻找一个列表内最小的两个数及其索引值

#算法:解决问题的步骤,可以用自然语言或者数学表达式来表达,最后用一门编程语言,如c、python、java等来翻译实现算法
counts=[122,33,442,12,4566,889l,54,678,20]
min(counts)
low=min(counts)
min_index=counts.index(low)
print min_index
#we can using another easier way
counts.index(min(counts))

#自定而下的算法设计方法,下面介绍三种找最小值和索引的算法
#查找,移除,查找
""" return a tuple of the indexes of the two smallest values in list """
#该算法主要思路是:首先找到最小值,并找到索引,然后移除,找新的列表最小值和索引值,返回索引值+1
#针对一个列表L,python有函数能够求最小值,求索引,插入,删除等操作
def find_two_smallest(L):
    smallest=min(L)         #求列表L的最小值
    min1=L.index(smallest)   #求索引
    L.remove(smallest)         #移除最小值
    next_smallest=min(L)       #下一个最小值
    min2=L.index(next_smallest)    #index

    #插入移除的数值
    L.insert(min1,smallest)           #2个变量,第一个是值,第二个是插入的位置

    if min1<=min2:
        min2+=1
    return (min1,min2)
S=[1,2,2,3,3,4,5,56,6,78,9,]
a=find_two_smallest(S)
print a

#输出结果:a=(0,1)

算法二:排序,标识最小元素,索引

#算法思路,首先将列表排序,然后0和1号的元素就是最小值。
def find_two_smallest(L):
    """ return two smallest values in list L: """
    temp=L[:]
    temp.sort()
    smallest=temp[0]
    next_smallest=temp[1]
    min1=L.index(smallest)
    min2=L.index(next_smallest)
 # return min1
# return min2
    return(min1,min2)

L=[1,2,3,4,5,5,65,6,0,-1]
find_two_smallest(L)
a=find_two_smallest(L)
#a(0)
for i in range(len(a)):
    print  a[i]

算法三:扫描排序

def find_two_smallest(L):
    '''return two small nums '''
    if L[0]<L[1]:
        min1,min2=0,1
    else:
        min2,min1=0,1
    for i in range(2,len(L)):
        if L[i]<L[min1]:
            min2=min1
            min1=i
        elif L[i]<L[min2]:
            min2=i
    return (min1,min2)

L=[1,2,3,4,5,5,65,6,0,-1]
#find_two_smallest(L)
a=find_two_smallest(L)
#a(0)
for i in range(len(a)):
    print a[i]

计时
时间复杂度和空间复杂度是衡量代码好坏的重要标准,即你所编写的代码在运行过程中所消耗的内存和时间。

你可能感兴趣的:(算法,python)