Python
关于二分查找的一些东西
二分查找是比较常见的查找算法,在猜价的节目中就可以用到。 二分查找的时间复杂度为O(logn)。 Python实现: 迭代 def search(nums, target): start = 0 end = len(nums) - 1 while start <= end: mid = (start + end) // 2 mid_num = nums[mid] if mid_num > target: end = mid - 1 elif mid_num < target: start = mid + 1 else: return mid return -1 递归 def search(nums, target, start, end): if start > end: return -1 mid = (start + end) // 2 mid_num = nums[mid] if mid_num > target: return search(nums, target, start, mid-1) elif mid_num < target: return search(nums, target, mid+1, end) else: return mid
Mar 11, 2019
1 min read
算法
Python 设计模式 - 单例模式
单例模式是一种比较常见的设计模式,所以顺理成章的成为我们第一个介绍的设计模式。 应用场景: 资源共享。例如,数据库连接,配置管理,日志管理。 实现方法有多种: 使用**_new_** class Singleton: _instance = None def __new__(cls, *args, **kwargs): if cls._instance is None: cls._instance = super().__new__(cls) #这里需要注意不能使用cls(), 否则会导致无限递归 return cls._instance ins1 = Singleton() ins2 = Singleton() id(ins1) == id(ins2) # True 使用闭包/函数装饰器 闭包使得自由变量instance在**_singleton**调用完成后没有被释放,跟上诉方法中的类变量作用一样。
Mar 5, 2019
1 min read
设计模式
关于冒泡排序的一些东西
虽然高德纳说过"冒泡排序除了它迷人的名字和导致了某些有趣的理论问题这一事实 之外,似乎没有什么值得推荐的。",但是还是值得研究一下的^_^
Mar 4, 2019
1 min read
算法