Обиколка на топ 5 алгоритми за сортиране с Python код

Сортиране на сложността на алгоритмите “

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

Нека направим обиколка на най-добрите 6 алгоритми за сортиране и да видим как можем да ги реализираме в Python!

Сортиране на балончета

Bubble Sort е този, който обикновено се преподава във въвеждащи CS класове, тъй като ясно показва как сортирането работи, като същевременно е лесно и лесно за разбиране. Bubble сортира стъпки през списъка и сравнява съседни двойки елементи. Елементите се разменят, ако са в неправилен ред. Преходът през несортирана част от списъка се повтаря, докато списъкът не бъде сортиран. Тъй като сортът Bubble многократно преминава през несортираната част на списъка, той има най-лошия случай на сложност O (n²).

Сортиране на селекцията

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

Сортиране на вмъкване

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

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

Сливането сортиране е идеално елегантен пример на алгоритъм Divide and Conquer. Той просто използва 2-те основни стъпки на такъв алгоритъм:

(1) Непрекъснато разделяйте несортирания списък, докато имате N подлисти, където всеки подпис има 1 елемент, който е „несортиран“ и N е броят на елементите в оригиналния масив.

(2) Многократно сливане, т.е. завладяване на подлистите 2 заедно, за да създадат нови сортирани подлисти, докато всички елементи не бъдат напълно обединени в един сортиран масив.

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

Бързото сортиране също е алгоритъм за разделяне и завладяване като сортиране на сливане. Въпреки че е малко по-сложно, в повечето стандартни реализации той се представя значително по-бързо от сортирането на сливане и рядко достига най-лошия си сложност на O (n²). Той има 3 основни стъпки:

(1) Първо избираме елемент, който ще наречем въртящия се от масива.

(2) Преместете всички елементи, които са по-малки от въртенето отляво на въртенето; преместете всички елементи, които са по-големи от въртенето вдясно от въртенето. Това се нарича операция на дял.

(3) Рекурсивно приложете горните 2 стъпки поотделно към всеки подмасив от елементи с по-малки и по-големи стойности от последното въртене.

Искате ли да се научите?

Следвайте ме в Twitter, където публикувам всичко за най-новата и най-добрата AI, технология и наука! Свържете се с мен и в LinkedIn!

Препоръчително четене

Искате ли да научите повече за кодирането в Python? Книгата на курса на Python Crash е най-добрият ресурс за научаване как да кодирате в Python!

И само с главата нагоре, поддържам този блог с партньорски връзки на Amazon към страхотни книги, защото споделянето на страхотни книги помага на всички! Като Amazon Associate печеля от квалифицирани покупки.