53 lines
2.8 KiB
Markdown
53 lines
2.8 KiB
Markdown
---
|
||
title: Algorithms
|
||
localeTitle: 算法
|
||
---
|
||
## 算法
|
||
|
||
在计算机科学中,算法是如何解决一类问题的明确规范。算法可以执行计算,数据处理和自动推理任务。
|
||
|
||
算法是一种有效的方法,可以在有限的空间和时间内以及用于计算函数的明确定义的形式语言中表达。从初始状态和初始输入(可能是空的)开始,指令描述了一种计算,该计算在执行时通过有限数量的明确定义的连续状态,最终产生“输出”并终止于最终结束状态。从一个州到下一个州的过渡不一定是确定性的;一些算法,称为随机算法,包含随机输入。
|
||
|
||
算法必须遵守某些要求:
|
||
|
||
1. 确定性:精确陈述过程中的每一步。
|
||
2. 有效的可计算性:该过程的每个步骤都可以由计算机执行。
|
||
3. 有限性:程序最终会成功终止。
|
||
|
||
一些常见类型的算法包括排序算法,搜索算法和压缩算法。算法类包括图形,动态编程,排序,搜索,字符串,数学,计算几何,优化和杂项。虽然技术上不是一类算法,但数据结构通常与它们组合在一起。
|
||
|
||
### 效率
|
||
|
||
算法最常见的是它们的效率和完成任务所需的计算资源量。评估算法的常用方法是查看其时间复杂度。这显示了算法的运行时间随着输入大小的增长而增长。由于今天的算法必须在大数据输入上运行,因此我们的算法必须具有相当快的运行时间。
|
||
|
||
### 排序算法
|
||
|
||
根据您的需要,排序算法有各种风格。 一些非常常见和广泛使用的是:
|
||
|
||
#### 快速排序
|
||
|
||
没有快速排序可以完成排序讨论。基本概念在以下链接中。 [快速排序](http://me.dt.in.th/page/Quicksort/)
|
||
|
||
#### 合并排序
|
||
|
||
它是排序算法,它依赖于如何合并排序数组以给出一个排序数组的概念。在这里阅读更多相关信息 - [合并排序](https://www.geeksforgeeks.org/merge-sort/)
|
||
|
||
freeCodeCamp的课程强调创建算法。这是因为学习算法是练习编程技巧的好方法。在开发人员面试期间,面试官最常测试算法候选人。
|
||
|
||
### 更多资源
|
||
|
||
[算法简介|速成课程:计算机科学](https://www.youtube.com/watch?v=rL8X2mlNHPM)
|
||
|
||
该视频提供了一个可访问且生动的算法介绍,侧重于排序和图搜索算法。
|
||
|
||
[什么是算法,为什么要关心? |可汗学院](https://www.youtube.com/watch?v=CvSOaYi89B4)
|
||
|
||
该视频介绍了算法,并简要讨论了它们的一些高调用途。
|
||
|
||
[15分钟排序算法|蒂莫宾曼](https://www.youtube.com/watch?v=kPRA0W1kECg)
|
||
|
||
该视频直观地演示了一些流行的排序算法,这些算法通常在编程和计算机科
|
||
|
||
[算法可视化器](http://algo-visualizer.jasonpark.me)
|
||
|
||
这也是一个非常好的开源项目,可以帮助您可视化算法。 |