什么是算法?
程序 = 数据结构 + 算法
数据结构
我们天天不是写程序就是在写程序的路上,那么你知道程序是由什么组成的吗?
答案就是由数据结构和算法组成的。然而我们在之前的几篇文章中已经讲解了数据结构就是:将现实世界的问题信息化,并且将信息存进计算机。同时还要实现对数据结构的基本操作。
就比如我们在前几篇文章中使用到的例子就是海底捞的排队系统:
- 该系统的数据结构是使用队列。
- 并且实现一些跟队列相关的基本操作
- 队头元素出队
- 新元素入队
- 输出队列长度
- 交换第 i 号和第 j 号的位置
- ...
在这里我们使用这个队列去表示海底捞的排队系统,其实就是把现实世界的问题信息化了。
算法
而算法就是如何处理这些信息,以解决实际问题。
比如现在有一个现实的问题:带小孩的顾客优先就餐,接下来我们就来设计一个算法:
- 执行基本操作2.(新顾客取号)
- 一次对比前面桌的信息,如果前面卓没有带小孩,就执行操作4.(调换带小孩的这桌新顾客至另一桌带小孩的后面一桌)
算法的五个特性
有穷性
一个算法必须总在执行有穷步之后结束,且每一步都可在又穷时间内完成。
注意:
算法必须是有穷的:
我们认为如果算法是无穷的就是没办法解决该问题。没办法解决该问题该算法就不能称之为算法,因为算法是解决问题的,解决不了问题就不能算作算法。(可能有点绕)
我举一个数学例子你们就懂了。找一个数n要大于5,现在我们找到了一个n是小于5的,那么这个n一定不大于5就应该是成立的。3 < 5 立即推 3 ≯ (不大于) 5
而程序可以是无穷的:
一个程序可以永无止尽的运行下去,算法是集成在程序中的,算法是用来解决问题的,所以算法是必须有穷的。程序相当于是一个环境,这个环境可以永久存在。
确定性
算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出。
如果相同的输入,最后得出的结果不是唯一的,那么这就不能称之为算法。
可行性
算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
输入
一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。
丢给算法处理的数据。
输出
一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。
算法处理完丢给我们的数据。
“好”算法的特质
正确性
算法应能够正确地解决求解问题。
可读性
算法应具有良好的可读性,以帮助人们理解。
如果说你的算法不具有可读性,那就不是一个好的算法。
注意:
算法可以用伪代码描述,甚至可以用文字描述。最重要的一点是”无歧义“地描述出解决问题的步骤
健壮性
输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果。
高效率(数据结构中重点研究)
执行速度快(时间复杂低)
低存储量需求(数据结构中重点研究)
不费内存(空间复杂度低)
结束语
数据结构中我们着重研究的就是查找和排序。
本人菜鸟一枚,仅分享学习笔记和经验。若有错误欢迎指出!共同学习、共同进步 🙂
18人评论了“算法基本概念”
1234
1234
Hiya! I know this is kinda off topic nevertheless I’d figured I’d ask.
Would you be interested in trading links or maybe guest writing a blog post or
vice-versa? My site discusses a lot of the same
topics as yours and I believe we could greatly benefit from each other.
If you’re interested feel free to send me an e-mail.
I look forward to hearing from you! Great blog by the way!
Also visit my blog – nordvpn special coupon code 2024
I discovered that I have ovarian cysts two years ago and ever since I began my research canadian pharmacy cialis 20mg No analysis of subgroups defined according to the stratification factors was conducted
Your article helped me a lot, is there any more related content? Thanks!
Then swap, and do the same with the no object cronadyn vs priligy
I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.
06; test for interaction 0 priligy and viagra combination Moreover, the risk of organ rejection or auto- immune inflammatory disease reactivation related to the adjustment of immunosuppressive drugs before or during pregnancy is about 2 to 5 4
Thanks for sharing. I read many of your blog posts, cool, your blog is very good.
Get the latest scoop on international affairs,
political developments, and sports highlights. Our seasoned journalists deliver up-to-the-minute reporting 24/7.
Premier league
where to get generic cytotec pill Quelqu un rГ©cupГ©rera en 2 semaines; quelqu un a besoin de 2 mois
Кто ты есть на самом деле?
В чем твое предназначение? В каком направлении лежит твой путь и
как тебе по нему идти?
Дизайн Человека расскажет об
этом!
– Снижает тревожность при выборе – Уменьшает
внутренние конфликты – Даёт конкретные рекомендации по принятию решений
– Укрепляет доверие к себе – Даёт конкретные рекомендации по принятию решений – Даёт опору на природные механизмы
– Даёт опору на природные механизмы –
Даёт конкретные рекомендации по принятию решений
– Помогает понять свои природные таланты и способности
Human Design · 5 генетических типов
людей · 12 профилей Дизайна Человека · 9
центров в бодиграф.
Кто ты есть на самом деле? В чем твое предназначение?
В каком направлении лежит твой путь и как тебе
по нему идти?
Дизайн Человека расскажет об этом!
– Даёт конкретные рекомендации по принятию решений – Укрепляет доверие к себе –
Укрепляет доверие к себе – Даёт конкретные рекомендации по принятию решений – Укрепляет доверие
к себе – Снимает давление социальных стереотипов
– Даёт опору на природные механизмы
– Уменьшает внутренние конфликты
– Позволяет выстроить эффективную стратегию жизни и
карьеры
Свой тип и профиль Личности; Таланты и яркие стороны;
Как для вас корректно вступать в
отношения и проекты.
Telechargez 888starz apk et commencez a gagner des aujourd’hui.
Android ?шін 888starz apk о?ай ж?не тегін орнатылады.
Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me.
https://idematapp.com/wp-content/pages/download_453.html 888starz
Kazino o‘yinlari va sportga stavkalar qilishni istaysizmi? Unda 888starz rasmiy ilovasini yuklab oling. Ushbu dastur yuqori darajadagi xavfsizlik va qulay interfeysni ta’minlaydi. Hoziroq yuklab olib, o‘yin dunyosiga qo‘shiling.