童话说说技术创业美文职业
投稿投诉
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

走进开发,5分钟熟悉快速排序和计数排序

1月9日 不回头投稿
  本文通过动态可视化图来解析快速排序法和计数排序法。
  这几天“手机壳颜色换主题色”需求引起一波轰动,关于事情真伪这里不做判断。但技术仍然是实施手段,产品最终还是要靠技术来实现,产品还是不能远离技术。多理解一点技术知识,和开发大佬说话就多了一份硬气。连基础的排序算法都不懂的产品经理很难的得到开发及项目组的青睐。
  那么你花5分钟阅读,再花5分钟理解。以后就可以在公司走路带风,抬头挺胸。
  关于“冒泡排序、插入及选择排序”可以看之前一篇文章:走进开发,5分钟熟悉3种经典排序算法
  一、快速排序法
  快速排序是冒泡排序的改进版,整个过程就在拆拆补补,东拆西补或西拆东补,一边拆一边补,直到所有元素达到有序状态。
  1。快速排序法基本思路
  先从数列中取出一个数作为基准数,然后进行大小分区;
  分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边;
  再对左右区间重复第二步,直到各区间只有一个数,排序完成。
  下面先通过图文形式一步一步进行拆解。
  拿〔4,1,6,2,9,3〕这个数组举例。
  第一遍遍历:
  先进行拆分〔4,1,6,2,9,3〕选择元素4作为轴心点
  检查是否14(轴心点)
  检查是否64(轴心点)
  检查是否24(轴心点)
  24(轴心点)是为真,将指数2和存储指数6进行交换
  检查是否94(轴心点)
  检查是否34(轴心点)
  34(轴心点)为真,将指数3和存储指数6进行交换
  将轴心点4和存储指数3进行交换
  此时轴心点4左边全部小于4,右边大于4
  目前数组顺序为〔3,1,2,4,9,6〕。
  下一步:
  先将左边先排好序
  选择元素3作为轴心点
  检查是否13(轴心点)
  检查是否23(轴心点)
  将轴心点3和存储指数值2进行交换
  现在轴心点已经在排序过后的位置
  进行拆分〔2,1〕选择2作为轴心点
  检查是否12(轴心点)
  左边遍历完成,将轴心点2和存储指数1进行交换
  右边同理避免视觉疲劳就不一一描述了,可看下面动态演示图。
  2。快速排序法全流程
  3。快速排序法总结
  默认取第一个元素为轴心点(轴心点的确认区分了“快速排序法”和“随机排序法”)两种算法,而随机排序则随机rand一个元素为轴心点;
  如果两个不相邻元素交换,可以一次交换消除多个逆序,加快排序进程。
  二、计数排序法
  计数排序,顾名思义,就是把要排序的元素都一一计数,某个数值如果总共有5个相同的,该元素对应的个数就记为5;总共有10个相同的,就记为10。
  1。计数排序法基本思路
  创建计数器;
  遍历数组中的每个元素在相应的计数器增加1;
  将计数器储存好的元素从小到大重新收集;
  重新将计数器元素重新存储于原数组。
  下面通过图文形式一步一步进行案例拆解。
  拿〔8,6,4,1,6,2,9,6,2,4,3〕这个数组举例。
  创建计数器19从小到大依次排列,然后遍历数组里每一个元素对应丢到相应计数器
  将8存到计数器8此时计数器8有1个元素
  将6存到计数器6此时计数器6有1个元素
  将4存到计数器4此时计数器4有1个元素
  将1存到计数器1此时计数器1有1个元素
  将6存到计数器6此时计数器6有2个元素
  将2存到计数器2此时计数器2有1个元素
  将9存到计数器9此时计数器9有1个元素
  将6存到计数器6此时计数器6有3个元素
  将2存到计数器2。。
  将4存到计数器4
  将3存到计数器3
  第二步:
  将计数器里面的数组从小到大依次储存于新数组列表
  计数器1有1个元素重新放入新列表〔1〕
  计数器2有2个元素重新放入新列表〔1,2,2〕
  计数器3有1个元素重新放入新列表〔1,2,2,3〕
  计数器4有2个元素重新放入新列表〔1,2,2,3,4,4〕
  计数器6有3个元素重新放入新列表〔1,2,2,3,4,4,6,6,6〕
  计数器8有1个元素重新放入新列表〔1,2,2,3,4,4,6,6,6,8〕
  计数器9有1个元素重新放入新列表〔1,2,2,3,4,4,6,6,6,8,9〕
  2。计数排序全流程
  3。计数排序总结
  排序不需要进行比较
  在当待排序数组内有大量重复的数值并且这些数值较为集中时,使用计数排序有明显的优势
  除了以上两种排序算法,还有许多不同的排序算法,每个都有其自身的优点和使用场景,当然也有局限性。可以多看几遍全流程动态图弄清来龙去脉,理解性地记忆,希望对你有用。
  再附上之前一篇文章:走进开发,5分钟熟悉3种经典排序算法
投诉 评论 转载

从洛阳铲谈起,论产品经理的洞察力互联网产品经理是一个专业性比较强的岗位,敏锐的洞察力有助于我们快速的做出判断和决策,本文将和大家聊聊怎么建立洞察力。一、什么是洞察力?喜欢看盗墓笔记、鬼吹灯之类小说……3个工作技巧让你在产品岗游刃有余本文讲解了三大工作技巧,适合02岁的初阶产品经理,希望可以帮助到你们曾经一度错误认为,产品经理的日常就是连环撕:撕运营,撕完运营撕设计;撕设计,撕完设计撕开发,好像产品经……迭代中加需求,如何不被打?采用敏捷迭代开发的互联网公司,往往在每一个迭代开始前,产品、开发、测试会通过需求会、冲刺会,评估该迭代的需求和工时,保证在该迭代内把所有明确的需求完成开发和测试。然而,相信很多……从产品与程序员打架事件,谈谈需求管理的沟通能力昨天一个平安科技内部两名员工打架的视频在互联网圈里疯狂,据传打架原因是产品经理给开发人员提了一个需求:要求app的主体颜色可以随着用户手机壳颜色改变而变化,开发人员对这个需求过……我的三年产品路(一):高阶产品经理必备的5种思维作者基于自己的工作经验和思考总结,梳理了“通过商业产品思维搞事情”的方法和技巧,撰写了“我的三年产品路”系列文章。本文是第一篇,主要讲述作者写该系列文章的背景以及产品经理需要具……产品经理针对任务开发的5大时间管理法则本文作者结合自己失败的工作经验,复盘总结出针对任务开发的五个时间管理要点,望以此为戒。最近在做一个之前项目的二期工作,要追加的模块之前有类似的项目经验,所以再次做同类型的……在AI公司做产品经理的一些心得当你在凝视深渊时,深渊也在凝视你。当AI产业被上升到国家意志这个高度的时候,相信有很多小伙伴已经在摩拳擦掌,准备进入AI领域一展身手了,这是好事。越多优秀的人才进入AI领……如何做一个不挨揍的产品狗?身为产品经理,要怎么合理的跟程序员提需求呢?要怎么去处理才能很好的化解产品与技术的矛盾,而避免挨揍呢?最近一个视频火遍了整个朋友圈,某公司的产品经理和程序员大打出手,据说……走进开发,5分钟熟悉快速排序和计数排序本文通过动态可视化图来解析快速排序法和计数排序法。这几天“手机壳颜色换主题色”需求引起一波轰动,关于事情真伪这里不做判断。但技术仍然是实施手段,产品最终还是要靠技术来实现……需求分析师,如何分析流程类需求?当一个公司将他们的业务流程纳入到系统上来做,他们提供了流程图,这个流程图还需要仔细分析,看看是否是一个合理能落地的流程。那么,需求分析师如何分析流程类需求?流程是什么?……产品经理如何打造“自己”这款产品?产品经理是公司内部最有影响力的产品,优秀的产品经理可以进一步产出优秀的产品,两者结合起来具有累加效应。现在的产品行业竞争壁垒特别是技术壁垒持续下降,在资本的催生下,一个行业可以……产品经理必须知道的个人品牌包装术俗话说“三分画七分裱”,装裱工艺在书画上被重视度很高。个人品牌如是,一个人的能力再强,得展示出来才能得到企业和同行的认可。包装的概念分为狭义和广义。狭义的包装(pa……
Android和iOS:两个系统交互设计的不同之处在哪?运用5个色彩技巧,设计更优质的网页用户体验符合用户认知的交互才是最自然的交互这是三种有趣的网页设计趋势,却被低估了通过导航加强用户体验的3个原则分屏式设计正在逐渐流行,常见的玩法有哪些?网站设计:不如学用简约风格的原则通过减少认知超载提升用户体验(下)APP设计:那些打动人心的设计点(一)Stack自动布局:Sketch中的Flexbox经验分享利用品牌基因法进行图标设计交互设计篇经历一个产品从0到1我都学会了什么

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界