首页 > 经验 > 关键词  > 归并排序最新资讯  > 正文

程序员必须知道的10大基础实用算法及其讲解

2014-06-20 10:34 · 稿源: cricode

算法一:快速排序算法

快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。

快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。

算法步骤:

1 从数列中挑出一个元素,称为 “基准”(pivot),

2 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。

3 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。

详细介绍:快速排序

算法二:堆排序算法

堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

堆排序的平均时间复杂度为Ο(nlogn) 。

算法步骤:

创建一个堆H[0..n-1] 把堆首(最大值)和堆尾互换

3. 把堆的尺寸缩小1,并调用shift_down(0),目的是把新的数组顶端数据调整到相应位置

4. 重复步骤2,直到堆的尺寸为1

详细介绍:堆排序

算法三:归并排序

归并排序(Merge sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。

算法步骤:

1. 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列

2. 设定两个指针,最初位置分别为两个已经排序序列的起始位置

3. 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置

4. 重复步骤3直到某一指针达到序列尾

5. 将另一序列剩下的所有元素直接复制到合并序列尾

详细介绍:归并排序

算法四:二分查找算法

二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn) 。

详细介绍:二分查找算法

举报

  • 相关推荐
  • 1024程序员节盛装来袭:院士、掌门人、技术英雄再聚首,共话研发新生态!

    年年如约的长沙·中国1024程序员节,承载着科技的不断进步和开源精神的传承,是万千开发者共探发展、共赢成长的重要机遇;历代传承的岳麓之约,更是新技术时代不断更迭、开源开放的生动缩影。1024.csdn.net智能新基建,研发新生态。在这个节日里,我们诚邀您共赴盛会,一起见证技术时代发展的新势力、新风向、新动能。

  • 基于牛顿求根法,新算法实现并行训练和评估RNN,带来超10倍增速

    人们普遍认为RNN是无法并行化的,因为其本质上的序列特性:其状态依赖于前一状态。这使得人们难以用长序列来训练RNN。从图中可以看到,使用DEER方法时的验证准确度图表与使用序列方法时的很相近。

  • 床垫市场风起云涌,中国床垫10大品牌最新排名助力消费者选购

    随着中国市场睡眠经济的崛起,大众对床垫的消费认知得到极大提升,国家政策也持续吹来提振家居消费东风: 6 月国务院常务会议审议通过《关于促进家居消费的若干措施》, 7 月发布《商务部等 13 部门关于促进家居消费若干措施的通知》等,系列政策的陆续出台落地,有望催化家居行业爆发,助力人民追求美好生活的需求进一步释放,而接下来的这份中国床垫 10 大品牌�

  • 支付宝商家群升级:群功能免费免研发、可联动10大公私域场景

    支付宝继合作伙伴大会宣布免费开放商家群后,10月12日,通过支付宝开放平台公众号宣布产品再度升级:商家群核心运营工具均免研发免费开放新增支付宝10大公私域入口与流量激励政策,进一步为商家私域运营降本增效。社群运营一直被认为是商家做私域的必经之路,此前商家做社群运营,需要自身具备相对成熟的私域流量体系,借助投放或营销活动等完成拉新。群、小程序、生活号,正在成为商家在支付宝私域经营的“三件套”。

  • 新研究:外星生命或不以碳为基础 可实现“自催化”

    美国一项新研究发现,许多行星可能存在所谓的自催化”化学反应,其能使用碳以外的多种化学元素,制造出与地球上的碳基生命截然不同的生命形式。地球上的生命以有机化合物为基础,这些分子由碳组成,通常也包括氢、氧、氮、磷和硫等元素。研究人员表示,最新研究除了对寻找宇宙中的生命及了解生命起源等产生影响外可能具有实际应用,例如优化化学合成、有效利用资源和能源等。

  • 构建6G网络的六大关键要点,爱立信专家讲解

    凤凰网科技讯9月28日,从2019年开始建设全球第一个5G网络至今,全球已有超过260个商用网络,未来5G技术将持续演进,最终走向6G的发展方向。6G可能在2028年到2030年逐步开始,关于6G网络的构建要点,爱立信专家表示,5G和6G不是截然分开的是一个持续的过程。6G网络将与人工智能、大数据、物联网等新技术更深度地融合,推动数字化和智能化发展。

  • 印度计划建设庞大的AI硬件基础设施 但远不及中国

    印度国家电子和信息技术部的印度AI团队上周五发布了一份AI愿景文件,呼吁在国家计算基础设施上进行大规模建设。这一计划将包括三个层面的计算能力,即高端计算、推理和边缘计算,以及拥有200/400Gbit/sec速度的分布式数据网格。愿景文件也未提及采购,这是一个重大问题,因为为任何实体采购GPU并不容易。

  • 慕思打造以“潮汐算法”为核心的健康睡眠系统,让好眠自然发生

    随着科技的不断发展,智能家居行业技术与市场环境日渐成熟,消费者对智能家居的认知度、认可度也正逐渐提升,行业发展迎来了新契机。当智能家居走到了消费者的日常生活中,将倒逼行业将注意力从外在的技术、功能进一步转移到对人本身的关注之上。已成功卡位AI智慧睡眠产品领域的慕思将有望持续立于潮头,以先见性思维引领行业未来发展。

  • 小米13T系列还有“无徕卡版本”:基础规格不变

    小米13T和13TPro是小米推出的两款高端旗舰手机,在9月份的时候已经在欧洲市场上市。这两款手机不仅在欧洲市场受到了消费者的欢迎,且已经在尼日利亚、智利等市场上架。小米13T系列两款手机的发布,为消费者提供了更多的选择,也让小米在高端市场上进一步扩大了市场占有率。

  • MonoXiver:新AI算法将2D照片转换为3D地图

    MonoXiver是北卡罗莱纳州立大学刘贤鹏团队开发的一种利用AI从二维图片中提取三维信息的方法。它只需要一个普通的单目摄像头,就可以构建相机周围可靠的三维地图。除自动驾驶外,这种AI方法也可应用于其他领域,如机器人、环境监测、医学成像等。