7 алгоритма, които всеки програмист трябва да знае

7 алгоритма, които всеки програмист трябва да знае

Като студент по програмиране вероятно сте научили много различни алгоритми по време на кариерата си. Владеенето на различни алгоритми е абсолютно необходимо за всеки програмист.





С толкова много алгоритми може да бъде предизвикателство да следите какво е от съществено значение. Ако се подготвяте за интервю или просто уточнявате уменията си, този списък ще го направи сравнително лесен. Прочетете, докато изброяваме най -важните алгоритми за програмистите.





1. Алгоритъмът на Дейкстра

Едсгер Дайкстра беше един от най -влиятелните компютърни учени на своето време и той допринесе за много различни области на изчислителната наука, включително операционни системи, конструиране на компилатори и много други. Един от най -забележителните приноси на Дейкстра е изобретателността на неговия алгоритъм за най -кратък път за графики, известен също като Алгоритъм на най -краткия път на Дейкстра.





Алгоритъмът на Дейкстра намира най -краткия път в графика от източник до всички върхове на графиката. При всяка итерация на алгоритъма се добавя връх с минималното разстояние от източника и такъв, който не съществува в текущия най -кратък път. Това е алчното свойство, използвано от алгоритъма на Джикстра.

Apsp dijkstra графика



Алгоритъмът обикновено се прилага с помощта на набор. Алгоритъмът на Дейкстра е много ефективен, когато се прилага с минимална купчина; можете да намерите най -краткия път само за O (V+ElogV) време (V е броят на върховете и E е броят на ръбовете в дадена графика).

Алгоритъмът на Дейкстра има своите ограничения; той работи само върху насочени и ненасочени графики с ръбове с положително тегло. За отрицателни тегла алгоритъмът на Белман-Форд обикновено е за предпочитане.





Въпросите за интервю обикновено включват алгоритъма на Джикстра, така че горещо препоръчваме да разберете сложните му подробности и приложения.

2. Обединяване Сортиране

В този списък имаме няколко алгоритма за сортиране и сортирането на сливане е един от най -важните алгоритми. Това е ефективен алгоритъм за сортиране, базиран на техниката за програмиране „Разделяй и владей“. В най-лошия сценарий, сортирането при сливане може да сортира n числа само за O (nlogn) време. В сравнение с примитивните техники за сортиране като Сортиране на балончета (което отнема O (n^2) време), сортирането на сливане е отлично ефективно.





Свързани: Въведение в алгоритъма за сортиране на сливане

При сортиране с обединяване, масивът, който трябва да бъде сортиран, се разделя многократно на подмасиви, докато всеки подмасив се състои от едно число. След това рекурсивният алгоритъм многократно обединява подмасивите и сортира масива.

как да прехвърлите файловете за запазване на пара на друг компютър

3. Бързо сортиране

Quicksort е друг алгоритъм за сортиране, базиран на техниката за програмиране Divide and Conquer. В този алгоритъм първо се избира елемент като опора, а целият масив след това се разделя на дялове около тази опора.

Както вероятно се досещате, доброто завъртане е от решаващо значение за ефективното сортиране. Пивотът може да бъде или случаен елемент, медиен елемент, първи елемент или дори последен елемент.

Изпълненията на бързото сортиране често се различават по начина, по който избират пивот. В средния случай бързото сортиране ще сортира голям масив с добър пивот само за O (nlogn) време.

Общият псевдокод на бързото сортиране многократно разделя масива върху опората и го позиционира в правилната позиция на подмасива. Той също така поставя елементите по -малки от шарнира вляво и елементи по -големи от шарнира вдясно.

Depth First Search (DFS) е един от първите графични алгоритми, преподавани на учениците. DFS е ефективен алгоритъм, използван за преминаване или търсене на графика. Той може също да бъде модифициран, за да се използва при обхождане на дървета.

Дърво първо дърво

Обхождането на DFS може да започне от произволен възел и да се потопи във всеки съседен връх. Алгоритъмът се връща назад, когато няма непосетен връх или има задънена улица. DFS обикновено се реализира със стек и булев масив за проследяване на посетените възли. DFS е лесен за изпълнение и изключително ефективен; тя работи (V+E), където V е броят на върховете и E е броят на ръбовете.

Типичните приложения на DFS обхода включват топологично сортиране, откриване на цикли в графика, намиране на пътеки и намиране на силно свързани компоненти.

Breadth-First Search (BFS) е известен също като обхождане на ниво за дървета. BFS работи в O (V+E) подобно на DFS алгоритъм. BFS обаче използва опашка вместо стека. DFS се гмурва в графиката, докато BFS пресича графиката по ширина.

как да преоразмерите изображение на mac

BFS алгоритъмът използва опашка, за да следи върховете. Непосетените съседни върхове се посещават, маркират и поставят на опашка. Ако върхът няма съседни върхове, тогава върхът се премахва от опашката и се изследва.

BFS обикновено се използва в peer-to-peer мрежи, най-краткия път на непретеглена графика и за намиране на минималното обхващащо дърво.

Двоично търсене е прост алгоритъм за намиране на необходимия елемент в сортиран масив. Той работи чрез многократно разделяне на масива наполовина. Ако необходимият елемент е по -малък от най -средния елемент, тогава лявата страна на средния елемент се обработва допълнително; в противен случай дясната страна се наполовина и се търси отново. Процесът се повтаря, докато се намери необходимия елемент.

Най-лошата времева сложност на двоичното търсене е O (logn), което го прави много ефективен при търсене на линейни масиви.

7. Алгоритми за минимално обхващащо дърво

Минималното обхващащо дърво (MST) на графика има минималните разходи сред всички възможни обхващащи дървета. Цената на едно разтягащо дърво зависи от теглото на ръбовете му. Важно е да се отбележи, че може да има повече от едно минимално обхващащо дърво. Има два основни алгоритъма за MST, а именно Kruskal's и Prim's.

Крускалски алгоритъм 4а

Алгоритъмът на Kruskal създава MST, като добавя ръба с минимални разходи към нарастващия набор. Алгоритъмът първо сортира ръбовете по тяхното тегло и след това добавя ръбове към MST, започвайки от минимума.

Важно е да се отбележи, че алгоритъмът не добавя ръбове, които образуват цикъл. Алгоритъмът на Крускал е предпочитан за редки графики.

Алгоритъмът на Prim също използва алчно свойство и е идеален за плътни графики. Централната идея в MST на Prim е да има два различни набора от върхове; единият набор съдържа нарастващия MST, докато другият съдържа неизползвани върхове. На всяка итерация се избира минималната граница на теглото, която ще свързва двата набора.

Алгоритмите за минимално обхващащо дърво са от съществено значение за клъстерния анализ, таксономията и излъчващите мрежи.

Ефективният програмист владее алгоритми

Програмистите непрекъснато се учат и развиват своите умения и има някои основни неща, в които всеки трябва да е опитен. Квалифициран програмист знае различните алгоритми, ползите и недостатъците на всеки от тях и кой алгоритъм би бил най -подходящ за даден сценарий.

инсталиране на нова версия на Office 2016
Дял Дял Туит електронна поща Въведение в алгоритъма за сортиране на Shell

Въпреки че сортирането на черупки не е най -ефективният метод, начинаещите имат много да спечелят от практикуването му.

Прочетете Напред
Свързани теми
  • Програмиране
  • Програмиране
  • Алгоритми
За автора М. Фахад Хаваджа(45 статии са публикувани)

Фахад е писател в MakeUseOf и в момента е специалност компютърни науки. Като запален писател на технологии той се грижи да бъде в крак с най-новите технологии. Той се интересува особено от футбола и технологиите.

Още от М. Фахад Хаваджа

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате