Something About Python

原创 2012年03月24日 21:55:14

   前段时间心血来潮,看了点Python的东西,推荐两个比较好的学习Python的网站:Python简明教程以及byr论坛十大的帖子里推荐的一个网站:LcodeTHW

   现在准备把这些天看得东西码上来,总结一下,包括了二分查找,选择排序,冒泡排序,归并排序以及简单的0-1背包问题等。

         二分查找:(其中calls 是总共执行次数)

def bsearch(s,e,first,last,calls):
    print first,last,calls
    if(last-first)<2:
        return s[last]==e or s[first]==e
    mid = (first + last)/2
    if e== s[mid]:
        return True
    if e>s[mid]:
        return bsearch(s,e,mid+1,last,calls+1)
    return bsearch(s,e,first,mid-1,calls+1)


    选择排序O(n^2):

 

def selSort(s):
    for i in range(len(s)):
        print s
        index = i
        minvalue = s[i]
        for j in range(i+1,len(s)):
            if s[j]<minvalue:
                index = j
                minvalue = s[j]
        temp = s[i]
        s[i] = s[index]
        s[index] = temp
        

    return s


        冒泡排序O(n^2)

def bubbleSort(s):
    flag = 1
    for i in range(len(s)):
        if flag==0:
            break
        print s
        for j in range(len(s)-1):
            if s[j]>s[j+1]:
                temp = s[j]
                s[j] = s[j+1]
                s[j+1] = temp
                flag = 1
            else:
                flag = 0

    归并排序O(nlogn):典型的divide and conquer两个步骤

def merge(left,right):
    result = []
    i = 0
    j = 0
    while i<len(left) and j<len(right):
        if left[i] <= right[j]:
            result.append(left[i])
            i+=1
        else :
            
            result.append(right[j])
            j+=1
    while i < len(left):
        result.append(left[i])
        i+=1
    while j < len(right):
        result.append(right[j])
        j+=1
    return result


def mergeSort(s):
    print s
    if len(s)<2:
        return s
    mid = len(s)/2
    left = mergeSort(s[:mid])
    right = mergeSort(s[mid:])
    together = merge(left,right)
    print 'merged',together
    return together

   背包问题:简单的DP,空间换时间。

def fastMaxVal(w, v, i, aW, m):

    global numCalls
    numCalls += 1
    try: return m[(i, aW)]
    except KeyError:
        if i == 0:
            if w[i] <= aW:
                m[(i, aW)] = v[i]
                return v[i]
            else:
                m[(i, aW)] = 0
                return 0
        without_i = fastMaxVal(w, v, i-1, aW, m)
        if w[i] > aW:
            m[(i, aW)] = without_i
            return without_i
        else: with_i = v[i] + fastMaxVal(w, v, i-1, aW - w[i], m)
        res = max(with_i, without_i)
        m[(i, aW)] = res
        return res

完!

  

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

something about tinyos

  • 2014-05-16 22:49
  • 795KB
  • 下载

something about UNCTAD

  • 2012-10-22 20:03
  • 678KB
  • 下载

Something about Compile error

A strange compile error! error :expected unqualified-id before ‘using’ It occurs When a class is d...

Something about machine learning

  • 2013-06-12 07:27
  • 4.47MB
  • 下载

Something About Nginx

  • 2013-02-16 23:57
  • 13.26MB
  • 下载

something about Educational Codeforces Round 11

这场CF的E、F两题最近才补,拿来说说。比较有意思的是,官方题解给的都不是最优复杂度。。E. Different Subsets For All Tuples  这道题肯定是dp,我的做法是这样的。假...

something about javaScript

  • 2013-09-25 23:35
  • 1.70MB
  • 下载

something about jquery

  • 2013-09-25 23:06
  • 8.91MB
  • 下载

something about me

每当谈起自己的故事呢,经常会自以为曲折动人,坎坷万千,但并不想提及自己的故事,仅想谈谈自己的现在。 我是正在努力成为一名合格程序猿的人,对,现在看来,仅仅只祈求着合格,其实在报志愿的时候,我最钟爱的...

Something about Moblin 2.0

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)