基于Python的产品经理必备算法描述

产品经理需要懂点算法,作者用案例描述了几种产品经理的必备算法。

未来的世界,一定是信息科技主导的世界。未来的任何产品,都离不开信息科技的支撑。不论你是哪个领域的产品经理,掌握一些基础的算法,是非常有必要的。

而如今的一些比较优秀的产品经理,如苹果产品创造人乔布斯,小米产品创造人雷军,QQ产品创始人马化腾,微信产品负责人张小龙,或多或少都有技术背景。当然,并不是说产品经理必须要有技术背景,因为有些没有技术背景的产品经理做的也不错。

本文想要表达的意思是,产品经理掌握一些基础的算法,可以为自己的产品设计,产品逻辑,产品形态起到锦上添花的作用。因此,本文结合作者这些年的工作经验,梳理出几个比较简单基础的算法。

这些基础算法,的确可以在产品设计过程中发挥作用,可以使产品经理在设计产品时,产品逻辑更加清晰,可以更加全面掌握产品特性。

本文的程序算法,使用大家比较常见的Python语言进行描述。

基础算法

排序算法

排序算法有很多种,如冒泡排序、选择排序、稀尔排序、归并排序、堆排序、插入排序、快速排序等。如果是计算机专业这几种算法应该是相当熟悉了,如果不是计算机专业的学生,其实全部掌握也没必要。

用什么排序不重要,主要是知道其中的逻辑。

为了便于大家理解,还是直接以实例的形式进行讲解;实例不是很复杂,主要是方便大家理解逻辑。

目前有一个数组,数组里是6个数,我们需要将这个数组里的数按从小到大顺序排列。

待排序的数组:arr=[4,6,3,9,1,3]

基本实现思路:

  1. 构建一个临时存放数据的参数:temp。

  2. 从数组中第一个元素开始,依次对两个相邻的元素进行比较,如果左侧的数字大于右侧的数字,则交换位置,交换位置,就需要用到temp。

  3. 运算过程:arr[0]=4,arr[1]=6,4<6,满足条件,则继续

  4. arr[2]=3,而6>3,则需要将 arr[1]和arr[2]交换位置,令temp =aar[1],这时temp的值是6,arr[1]=arr[2],这时arr[1]的值为3,arr[2]=temp,arr[2]值为6。

  5. arr[2]=6,再与arr[3]=9作比较,满足条件。

  6. arr[3]=9再与arr[4]=1作比较,9大于4,交换。则arr[3]=1,arr[4]=9。

  7. arr[4]=9再与arr[5]=3作比较,9大于3,交换。则arr[4]=3,arr[5]=9。

  8. 这时的数组顺序变为[4,3,6,1,3,9]。

  9. 继续从数组的第一个元素开始,重复上述过程。

我们接下来看一下按照以上思路,数组中的元素是如何变化的:

  • 第一次:[4,3,6,1,3,9]

  • 第二次:[3,4,1,3,6,9]

  • 第三次:[3,1,3,4,6,9]

  • 第四次:[1,3,3,4,6,9]

我们为了验证我们的思路,程序代码如下:

聚类算法

聚类算法在实际生产生活中用途比较广泛,像数据统计分析,人工智能识别物体,信息分类归集等。比较常见的聚类算法有:凝聚层次聚类、图团体检测(Graph Community Detection)、K-Means(K均值)聚类、均值漂移聚类、基于密度的聚类方法(DBSCAN)、高斯混合模型(GMM)的最大期望(EM)聚类等。

当然,以上这些算法专业性太强了。如果不从事专门领域的工作,产品经理用到这些算法的可能性也很小。

本文今天讲一个最为基础的聚类算法,非常便于大家理解。

我们还是以数组为例,arr=[1,1,2,3,5,4,5,4,2,3,3,1,3,3,4,5],我们的所谓的聚类,就是要统计这个数组中每个数字出现的次数,最终我们想到达到这样的输出结果:

  • 1出现3次

  • 2出现2次

  • 3出现5次

  • 4出现3次

  • 5出现3次

基本实现思路:

  1. 我们首先计算数字的长度,根据长度进行遍历。

  2. 构建一个字典。当并数组中的值作为字典的key,出现的次数作为value。

  3. 如果某个元素没有在字典中,则记录这个元素为key,value初始为1。

  4. 如果某个元素已经存在在字典中,则更新这个元素的value 1。

  5. 遍历完成,输出字典值。

我们为了验证我们的思路,程序代码如下:

由于我们是没有排序的,所以输出顺序与之前预想的顺序有些差异。如果需要排序,则可以先将原数组中的数据排序后,再进行计算。

旋转算法

旋转的应用大家应该不陌生,最常见的就是手机或是电脑中查看照片的时候,照片的左转右转。图片旋转、视频旋转、文字内容旋转,其实归根到底都是数字矩阵的旋转。

所有的这些表现形式,底层都是一个个二进制的数字组成的。接下来,我们就是要在最基础的逻辑展开分析。

我们还是以数组进行讲解。

我们有数组 arr=[[1,2,3],[4,5,6]],准备向右旋转90度。为了便于大家理解,我这样表示:

原数组:

[1,2,3]

[4,5,6]

我们认为,数组的宽度[1,2,3]=3,为x轴;数组的高度2,为y轴。

向右旋转90度的后数组:

[3,6]

[2,5]

[1,4]

这时,宽度x变为2,高度y变为3。

基本实现思路:

1)我们观查上述数组发现,向右旋转90度后,组的维度由 2*3,变为了3*2。

2)而数字位置变化如下:

  • 1:[0][0]->[2][0]

  • 2:[0][1]->[1][0]

  • 3:[0][2]->[0][0]

  • 4:[1][0]->[2][1]

  • 5:[1][1]->[1][1]

  • 6:[1][2]->[0][1]

3)我们观察上述数字变化,大家发现什么规律?每个数的数组x和y坐标都左右进行了对调,变换后的y坐标是原x坐标的倒序。

4)进行对原数组宽度x(设为i)和高度y(设为j)的遍历,x遍历i的增加,正是新数字的坐标的减少。

即:新数组位置([x-1-i][j]=旧数组位置([j][i])

我们为了验证我们的思路,程序代码如下:

为了便于大家理解,将原数组的值在遍历的时候也进行了输出展示。

我们再思维扩展一下,按我们这种思路,如果数组要向左旋转90度呢?

原数组:

[1,2,3]

[4,5,6]

向左旋转90度之后的数组:

[4,1]

[5,2]

[6,3]

即:

  • 1:[0][0]->[0][1]

  • 2:[0][1]->[1][1]

  • 3:[0][2]->[2][1]

  • 4:[1][0]->[0][0]

  • 5:[1][1]->[1][0]

  • 6:[1][2]->[2][0]

大家又会发现什么规律呢?

是不是新数组y坐标同原数组x坐标增长趋势一致,而新数组x的坐标,是原数组x坐标的倒序?

也就是说,对原数组宽度x(设为i)和高度y(设为j)的遍历,高度y遍历j的增加,正是新数字的x坐标的减少。即:新数组位置([i][y-1-j]=旧数组位置([j][i])

我们为了验证我们的思路,程序代码如下:

经过上述分析,大家是不是对旋转算法有了一个清晰的认识?

如果想旋转180度呢?如果大家有兴趣,可以按照上述思路进行分析实践。

总结

对于产品经理而言,精通本领域的基础知识,熟悉业务与产品模式是必须具备的技能。而于算法的了解和掌握,可以起到锦上添花的作用。

算法,是锻炼产品经理的逻辑思维相对比较好的训练工具。有兴趣的同学,可以多看一些这方向的书籍,也有很多比较有意思的算法,可以在工作之余练练手,调节一下心情。毕竟产口经理的日常,不仅仅是写个需求,更多的,还要看市场、看政策、看方向、看竞品、懂运营、懂业务、懂管理、懂营销、会分析、会沟通、会写PPT,需要做的工作内容还很多。

而至于最终的产品能不能成功,还要看运气。个人的力量太渺小了,很多产品经理的成功,其实是赶上了趋势。处在大环境上升趋势的时候,觉得自己的能力很强,其实有时候也是一种误判。结果大环境一旦发生变化,处在下降趋势的时候,往往就会把前几年靠运气积累的财富,这些年凭本事赔光了。

所以说,产品经理太难了。

正因为如此,产品经理需要时刻保持清醒客观的头脑,而算法是一个相当不错的朋友,当你骄傲时让你冷静,当你自卑时给你信心,当你迷茫时给你方向。

(0)

相关推荐

  • 七大经典、常用排序算法的原理、Java 实现以及算法分析

    0. 前言 大家好,我是多选参数的程序锅,一个正在 neng 操作系统.学数据结构和算法以及 Java 的硬核菜鸡.数据结构和算法是我准备新开的坑,主要是因为自己在这块确实很弱,需要大补(残废了一般) ...

  • 求职指南【5】-算法工程师综合面试100问

    AI研习图书馆,发现不一样的精彩世界 算法 面试 算法工程师面试知识点总结五 一.前言 算法工程师面试100问,问题搜集整理于网络,包括算法岗面试过程中可能会被问及的100个常见机器学习问题,如数据结 ...

  • 「排序算法」—图解双轴快排

    首发公众号:bigsai 前言 在排序算法中,快排是占比非常多的一环,但是快排其思想一直被考察研究,也有很多的优化方案.这里主要讲解双轴快排的思想和实现. 首先,双轴快排也是一种快排的优化方案,在JD ...

  • 前端笔试题——手撕快速排序(保姆级手撕)

    引言: 许多互联网公司在招聘前端开发人才时,不仅考察面试者对于前端知识的掌握程度,数据结构与算法也渐渐成为了默许的要求. 除了考察链表.二叉树.图等数据结构以外,在算法中最具有代表性的就是" ...

  • ​LeetCode刷题实战283:移动零

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • 七大排序算法总结

    以下所有动图均来源于一像素博客园 以下代码均使用C 编写 完整代码请到这里下载 稳定排序算法:冒泡排序.插入排序.归并排序 时间复杂度不受数据影响:选择排序.归并排序.堆排序 时间复杂度基本小于n2: ...

  • 产品经理必备的13款效率工具 | 产品壹佰

    工欲善其事,必先利其器.互联网公司的产品经理在日常工作中离不开一些专业工具软件的支持.现在就结合产品经理的具体工作内容,给大家分享一些比较实用的工具软件,它们涵盖思维导图制作.产品文档写作与协作.产品 ...

  • 9大效率工具!产品经理必备

    产品经理作为产品整条生命线的总指挥,需要负责需求分析.业务建模.产品管理.数据监控等各个环节,要做的事十分繁杂.因此对产品经理来说,掌握一些可以提升工作效率的工具,是非常必要的. 作为入行7年的老产品 ...

  • 高阶产品经理必备财务基础知识:利润表、资产负责表、现金流量表...

    产品经理的工作是培育成功的产品,为公司做出积极的经济贡献.产品经理必须确保产品的实际财务绩效满足预期的财务和市场绩效目标.制定关于产品的合理决策需要财务数据.然而,我从持续的基准测试中发现,许多产品经 ...

  • 产品经理必备14大效率工具 | 人人都是产品经理

    作为一名互联网产品经理,在创造一款产品时,从了解需求.验证需求.做原型.评审到写PRD.跟进开发.测试--面对这漫长复杂的工作流,必须要使用一些工具软件辅助自己的工作,比方说思维导图.文档写作.原型设 ...

  • 产品经理必备技能之用户画像

    用户画像说简单点就是要你虚构出一个产品的用户,设定用户性别.年龄.收入.家庭等基本情况进行场景模拟.通过用户画像,我们可以将产品用户具体化.形象化,从而更好地理解产品用户,设计出更加符合用户需求的产品 ...

  • 浅谈产品经理必备的五项技能 | 人人都是产品经理

    经常会有人问产品经理到底要具备哪些技能,以前我自己也断断续续总结过一些.趁着十一假期,我整理一张思维导图梳理产品经理必备的技能,希望能对大家有所帮助. 产品经理需要具备的技能,我认为可以总结出以下五个 ...

  • 产品|002期-IVD产品经理必备的5项能力

    其实每次谈到产品经理这个职位,无论是对于公司管理层而言还是求职者而言都是一个不好去定义的岗位,做得好的产品经理可以统御销售团队,把握市场机会.那如果做得差一点的产品经理呢,就是做做竞品分析,给销售培训 ...

  • 程序员&产品经理必备技能之「时序图」

    时序图的使用场景非常广泛,几乎各行各业都可以使用,可以用于梳理业务流程,使业务看起来非常清晰,也可以梳理开源软件,梳理各个组件之间的关系,层次非常清楚,便于记忆,也可以使用在更多场景. 一.什么是时序 ...

  • 产品经理必备的三种经典逻辑思考方式

    这是 基诺实验室 的第 18 篇文章 引言 每个人都有自己不同的思维方式,思维方式决定着看问题的层次和高度.作为靠思考为核心竞争力的产品经理,需要更强的逻辑思维能力.而这种逻辑思维的能力是需要在认识的 ...