美文网首页
我和《算法》有个故事(一):基础,编程与模型

我和《算法》有个故事(一):基础,编程与模型

作者: 两个橘子 | 来源:发表于2018-11-14 11:51 被阅读8次

    第一回,当然是讲述基础的东西了。

    《算法》上的第一回,基本上市讲述Java的基础知识,但我在这个时间点,比较熟悉的编程语言是python,对Java运用不深,所以打算粗略地看一下java的运用,主要是使用python来实现这些代码。所以说,我比较注重的,是其中的思想。

    这样的思想下来,第一章基本没有要讲的。我后来决定把那些代码改成python写一点吧。

    22页的随机数:

    这个没什么好说的,只是因为用到了random里面一个没有用过的函数而写写而已

    import random

    #x,y是范围值,z是精度(精确到第几位)

    def randomseq(x,y,z,q):

        for i in range(q):

            a = random.uniform(x,y)

    #这个参数uniform是一个可以去到小数的参数,而randint只能是整数

            b = round(a,z)

            print(b)

    28页的二分查找:

    网上有很多python的二分法的代码,但算法重要的核心是思想,只要你理解了里面的思想,就可以写出来了,没必要看别人的答案。

    二分法,就是从给的一组数据中,找到中间值,再用数据和他比较大小(有一个前提,是这组数据必须是有序的,从大到小或者从小到大都可以),在范围内,那就从这个范围里面再次重复操作,范围外的,那就在范围外重复操作。

    重复操作,用while比较方便,比较大小的,用if -else比较好:

    def BinarySearch(data,a):

        a0 = 0

    #因为数组从零开始,所以最后一位的大小会比长度小1

        an = len(data) - 1

        while(a0 <= an):

            mid =  a0 + (an - a0) // 2

            if data[mid] > a:

                an = mid - 1

            #因为数组是从0开始的,

            elif data[mid] < a:

                a0 = mid + 1

            else:

                return 'mid=',mid

        return False

    网上有很多的二分算法(python版),都是写 “mid =  (an + a0) // 2”,经过我的验证,这种方法和我写的都可以使用。

    相关文章

      网友评论

          本文标题:我和《算法》有个故事(一):基础,编程与模型

          本文链接:https://www.haomeiwen.com/subject/uvqlfqtx.html