算法
二次元肥宅
优雅 永不过时
展开
-
算法 雪花算法 Python
Twitter 于 2010 年开源了内部团队在用的一款全局唯一 ID 生成算法 Snowflake,翻译过来叫做雪花算法。Snowflake 不借助数据库,可直接由编程语言生成,它通过巧妙的位设计使得 ID 能够满足递增属性,且生成的 ID 并不是依次连续的。它连续生成的 3 个 ID 看起来像这样:563583455628754944563583466173235200563583552944996352Snowflake 以 64 bit 来存储组成 ID 的4 个部分:1、最高位占1原创 2020-07-17 18:14:15 · 3123 阅读 · 1 评论 -
算法 冒泡排序 Python
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较相邻的两个元素,如果两个元素相等,不发生交换。这个应该算原理吧。 时间复杂度: 因为存在那么一种情况,数组无需排序,但是,算法执行的时候该比还是要比的,所以最乐观的情况下,时间复杂度为O(n)。最差的情况下为O(n^2),事实上,一般平均时间复杂度都是O(n^2)。 算了,废话不多说。import datetimeimport randomdef bubble_sort(array): fo...原创 2020-07-15 20:48:45 · 182 阅读 · 0 评论 -
算法 快速排序 Python
快速排序策略:分而治之,一种著名的递归式问题解决方法。只要你会递归 ,这个快速排序就很是简单。如果你不会递归,建议去学一下或许会有所疑问为何输出 时间00:00:00 那是因为用时不足一秒。import datetimeimport randomdef query_sort(array): if len(array) < 2: return array # 最多只有一个元素的数组就别来凑热闹了 else: p = arra.原创 2020-07-14 15:31:32 · 221 阅读 · 0 评论 -
算法 费氏搜寻法 Python
费氏搜寻法简介费氏搜寻法,利用斐波那契数列从有序数列中搜寻特定元素的一种搜索算法。上文说的是二分法,二分法每次搜寻时,都会将区间分为一半,所以其时间为O(log₂n)。费氏搜寻,其利用费氏数列作为间隔来搜寻下一个数,所以区间收敛的速度更快,搜寻时间为O(logn)。用一个例子来说明:查询的数组:num[]0 0 1 1 1 2 2 2 3 5 6 7 8 8 9斐波拉契数列:F[]1 1 2 3 5 8 13 21…现在假定我们查询的数字是:find=7.方便计算,我们的num[]和F[]原创 2020-07-13 18:40:42 · 335 阅读 · 0 评论 -
算法 二分法 Python
二分法 二分法,有这么一个场景,大概咱们都能下意识的使用到它。 猜数字游戏:我随机生成了一个数字,范围是0-100之间,你需要用最短的时间,最少的次数去猜到它,我会告诉你每次猜测的结果是大于还是小于,直至正确为止。 游戏开始:随机数字78 范围 0 - 100 次数 玩家 系统 第一次 50? 小了 第二次 75? 小了 第三次 88? 大了 第四次原创 2020-07-12 14:22:27 · 556 阅读 · 0 评论