0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

论程序员学算法的重要性

C语言编程学习基地 2018-01-24 10:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

算法是计算机科学领域最重要的基石之一,但却受到了一些程序员的冷落。

许多小伙伴看到一些公司在招聘时要求的编程语言五花八门就产生了一种误解,认为学计算机就是学各种编程语言,或者认为,学习最新的语言、技术、标准就是最好的铺路方法。

其实大家都被这些公司和培训机构误导了。

编程语言虽然该学,但是学习计算机算法和理论更重要,因为计算机语言和开发平台日新月异,但万变不离其宗的是那些算法和理论。

例如数据结构、算法、编译原理、计算机体系结构、关系型数据库原理等等。

这些基础课程更可以称之为为“内功”,而新的语言、技术、标准则更像是“外功”。

整天赶时髦的人最后只懂得招式,没有功力,是不可能成为高手的。

“程序员是否必须会算法”。

这是一个充满争议的问题,虽然并不像“生存还是毁灭”之类的选择那样艰难而沉重,但也绝不是一个轻松的话题。

很多人对算法的理解太片面,很多人觉得只有名字里包含“XX算法”之类的东西才是算法。

而我们认为算法的本质是解决问题,只要是能解决问题的代码就是算法。

初学

读书计划的第一步是选择书籍,这里首推算法导论,这本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。

程序员需要知道的5大基础实用算法

算法一:快速排序

快速排序是由东尼·霍尔所发展的一种排序算法。

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

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

算法二:堆排序算法

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

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

算法三:归并排序

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

算法四:二分查找算法

二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。

搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜 素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。

如果在某一步骤数组 为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn) 。

算法五:BFPRT(线性查找算法)

BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分 析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最坏情况下,依然能达到o(n)的时间复杂 度,五位算法作者做了精妙的处理。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4760

    浏览量

    97146
  • 程序员
    +关注

    关注

    4

    文章

    955

    浏览量

    30786

原文标题:为什么每个程序员都需要学习算法?

文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    奔赴热AI,码力全开!Talkweb House@1024程序员日系列活动圆满收官

    1024程序员日”系列活动至此划上了一个圆满句号。本届1024程序员节以“AI构建世界,智能引领未来”为主题,广邀技术大咖、产业领袖、企业代表与全球开发者齐聚星城
    的头像 发表于 10-27 18:59 431次阅读
    奔赴热AI,码力全开!Talkweb House@1024<b class='flag-5'>程序员</b>日系列活动圆满收官

    园区电气安全管理系统的重要性

    、稳定性和可靠提出了前所未有的挑战。在此语境下,构建一套智能化、系统化的 电气安全 管理系统已不再是可选项,而是保障园区生命线、实现可持续发展的战略基石。其重要性主要体现在以下四个核心维度。 一、 从被动应对
    的头像 发表于 09-17 11:39 243次阅读
    <b class='flag-5'>论</b>园区电气安全管理系统的<b class='flag-5'>重要性</b>

    120Ω的秘密:CAN总线终端电阻的重要性

    CAN总线作为一种广泛应用的工业通信协议,其终端电阻的作用不容忽视。本文将详细探讨CAN总线终端电阻的重要性及其在通信中的关键作用。CAN总线终端电阻的重要性CAN总线终端电阻顾名思义就是夹在总线
    的头像 发表于 08-08 11:35 788次阅读
    120Ω的秘密:CAN总线终端电阻的<b class='flag-5'>重要性</b>

    PCBA加工必看!BOM表的重要性大揭秘

    一站式PCBA加工厂家今天为大家讲讲PCBA加工中BOM表的内容和格式有什么要求?BOM表在PCBA加工中的重要性。在PCBA加工中,BOM表(物料清单)扮演着至关重要的角色,是连接设计与制造的重要
    的头像 发表于 06-18 10:15 812次阅读

    程序设计与数据结构

    的地址)出发,采用推导的方式,深入浅出的分析了广大C程序员学习和开发中遇到的难点。 2. 从方法的高度对C语言在数据结构和算法方面的应用进行了深入讲解和阐述。 3. 讲解了绝大多数C程序
    发表于 05-13 16:45

    连接器气密检测的重要性

    。连接器气密检测的重要性•恶劣环境电气连接保障:潮湿、粉尘、腐蚀性气体、温度剧变等恶劣环境,气密不良将导致触点腐蚀、绝缘下降、信号中断等故障,威胁设备安全运行
    的头像 发表于 03-17 11:01 606次阅读
    连接器气密<b class='flag-5'>性</b>检测的<b class='flag-5'>重要性</b>

    PCB拼板设计全解析:重要性、优势与应用实践

    一站式PCBA智造厂家今天为大家讲讲PCB拼板设计的重要性表现哪些方面?PCB拼板设计的基本概念及其重要性。在电子制造行业,SMT贴片工艺中,PCB拼板设计是一项极为关键的步骤。通过优化PCB拼板
    的头像 发表于 03-13 09:35 1074次阅读
    PCB拼板设计全解析:<b class='flag-5'>重要性</b>、优势与应用实践

    芯片制造中薄膜厚度量测的重要性

    本文论述了芯片制造中薄膜厚度量测的重要性,介绍了量测纳米级薄膜的原理,并介绍了如何在制造过程中融入薄膜量测技术。
    的头像 发表于 02-26 17:30 2407次阅读
    芯片制造中薄膜厚度量测的<b class='flag-5'>重要性</b>

    鉴源实验室·HTTPS对于网络安全的重要性

    本文旨在深入解析HTTPS的工作原理、安全以及其在网络安全中的重要性
    的头像 发表于 02-19 14:31 785次阅读
    鉴源实验室·HTTPS对于网络安全的<b class='flag-5'>重要性</b>

    构建综合指挥调度系统的重要性

    构建综合指挥调度系统的重要性不言而喻,它对于提升应急响应速度、优化资源配置、加强跨部门协作、提高决策效率和确保公共安全等方面都具有至关重要的作用。以下是古河云科技构建综合指挥调度系统重要性的几个关键方面:
    的头像 发表于 02-06 16:56 880次阅读

    阿里云升级通义灵码AI程序员,全面上线

    近日,阿里云宣布其备受瞩目的通义灵码AI程序员已正式全面上线,为开发者带来更为强大和便捷的编程辅助工具。 此次上线的通义灵码AI程序员,在功能上实现了全面升级。现在,它支持VS Code
    的头像 发表于 01-09 11:16 957次阅读

    TMS320C6000程序员指南

    电子发烧友网站提供《TMS320C6000程序员指南.pdf》资料免费下载
    发表于 12-24 17:19 2次下载
    TMS320C6000<b class='flag-5'>程序员</b>指南

    TMS320C55x DSP CPU程序员参考补充

    电子发烧友网站提供《TMS320C55x DSP CPU程序员参考补充.pdf》资料免费下载
    发表于 12-21 11:36 3次下载
    TMS320C55x DSP CPU<b class='flag-5'>程序员</b>参考补充

    PCB板元器件点胶加固的重要性

    PCB板元器件点胶加固的重要性PCB板元器件点胶加固在电子制造过程中起到了至关重要的作用,其重要性主要体现在以下几个方面:一、提高机械强度点胶加固可以显著降低电子元件的翘曲和变形现象,从而提高整个
    的头像 发表于 12-20 10:18 2420次阅读
    PCB板元器件点胶加固的<b class='flag-5'>重要性</b>

    UCD3138A64/UCD3138128程序员手册

    电子发烧友网站提供《UCD3138A64/UCD3138128程序员手册.pdf》资料免费下载
    发表于 12-09 14:42 1次下载
    UCD3138A64/UCD3138128<b class='flag-5'>程序员</b>手册