第一回,当然是讲述基础的东西了。
《算法》上的第一回,基本上市讲述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”,经过我的验证,这种方法和我写的都可以使用。