八大算法基础思想

八大基础算法思想

算法和数据结构是每个程序员都必须修炼的内功,在面试的时候或多或少都会被问到一些算法相关的问题。

算法的应用不单只体现在编程中。狭义的来讲,算法可看作是数据传递和处理的顺序、方法和组成方式,就像是各种排序算法等。广义的来讲,算法更像是一种事物运行的逻辑和规则。

算法其实是一种思维模式,本文就简单介绍一下八种常用算法思想,分别是枚举、递推、递归、分治、动态规划、贪心、回溯和模拟

1.枚举算法

最简单的枚举算法,也被称为穷举,顾名思义就是穷尽列举。枚举思想的应用最为广泛,也最是通俗易懂。枚举思想是将问题的可能解依次全部列举,然后一一带入问题内检验,从而找到正确解

枚举思想其实有一种兵分多路的意思,就是从多个样本中依次试错找到正确结果,当然弊端也是显而易见——试错成本。还存在一些容易叫人忽视的问题,比方说待解决问题的「可能解 / 候选解」的筛选条件,「可能解」之间相互的影响,穷举「可能解」的代价,「可能解」的穷举方式等等。

枚举思想用以下图形表示:
在这里插入图片描述

案例

百钱买百鸡问题
公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?

2.递推算法

递推思想与枚举思想类似,都很符合人类的思维方式,人脑在面临未知问题时,第一反应是根基定性思维,从已知推导未知,从而得到解决问题的方法。

递推,顾名思义就是递次推导,递推思想的核心就是从已知的条件出发,逐步推算出问题的解。条件与结果中间存在着某种因果关系,这种条件关系可能人脑思维很容易想通,但是对于计算机而言,复杂的推导其实很难实现。计算机擅长的是执行高密度重复性高的工作,因此计算机在运用递推思想时,大多是重复性推理。举个例子,从「今天是 1 号」推出「明天是 2 号」,以此推导出以后的日期。这种推理的结构十分类似&#x

  • 18
    点赞
  • 178
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
数据结构中的八大排序算法,是指常见的八种用于对数据进行排序的算法。这八种算法分别是冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序和基数排序。 冒泡排序是一种简单的排序算法,通过不断比较和交换相邻元素的位置,使得最大(或最小)的元素逐渐往后(或往前)移动。 选择排序是一种简单直观的排序算法,每次选择未排序序列中最小(或最大)的元素,放到已排序序列的末尾。 插入排序是一种简单直观的排序算法,将一个待排序的元素插入到已部分排序的数列中的合适位置。 希尔排序是一种改进的插入排序算法,通过将待排序数列分组,并对每个分组进行插入排序,然后逐渐减小分组规模,最后进行一次插入排序。 归并排序是一种分治思想的排序算法,将待排序数列不断分割成较小的数列,然后再将这些较小的数列按照顺序进行合并。 快速排序是一种分治思想的排序算法,通过选择一个中间的基准元素,将数列分割成两部分,然后分别对这两部分进行排序。 堆排序是一种利用堆这种数据结构的排序算法,通过将待排序数列构建成一个大(或小)顶堆,然后逐步将堆顶元素与最后一个元素交换,并调整堆结构。 计数排序是一种非比较型的排序算法,通过统计待排序数列中每个元素出现的次数,然后依次输出即可。 基数排序是一种非比较型的排序算法,通过对待排序数列的每个位进行排序,依次从低位到高位进行。 这里简单介绍了八大排序算法基本思想和实现方法。在实际应用中,不同的排序算法适用于不同的场景和要求,我们需要根据具体情况选择合适的算法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值