неделя, 7 юли 2013 г.

Алгоритми за сортиране

Blog of Syssboxx

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

Selection Sort

Този алгоритъм за сортиране е известен на български още като сортиране чрез пряка селекция.

Принципът му на действие се състои в :

1.Намиране на най-малкият елемент от масива

2.Размяна на стойностите на този елемент с първия елемент от масива

3.Тези действия се повтарят докато се изчерпят всички елементи и масивът бъде подреден в нарастващ ред

Merge Sort

Merge Sort e "разделяй и владей алгоритъм, базиран на сравнение."

1.Първоначално неподредения масив се разделя на две части.

2.След това всяка от получените части се разделя още на два подмасива, докато останат само единични елементи.

3.Всеки два съседни елемента се сравняват и елементите в двойката се обединяват и пореждат във възходящ ред.(Merge)

4.След изчерпване на единичните елементи се преминава към сравняване с елементите от съседната двойка.Съседните подмасиви се сравняват, подреждат и обединяват докато не бъдат подредени всички подмасиви и остане само един масив - подреденият.

Quick Sort

Принципът на действие на бързото сортиране не състои в следното :

1.Избира се елемент спрямо който ще се сравняват останалите елементи в масива т. нар. "pivot". За такъв елемент може да бъде избран - първия или последния елемент, медианата или произволен елемент от масива.

2.Всеки елемент се сранява с "pivot" елемента и се пренаредждат, така че елементите,по-малки от него се поставят вляво от него, а по-големите - вдясно от него.

3.Тези действия се повтарят рекурсивно - избира се нов "pivot" елемент за всяка подредица и отново се сравняват останалите елементи с него.

4.Получените подредици се сливат и получаваме подредения масив.

source

Bubble Sort

Методът на мехурчето е един от най-известните алгоритмни за сортиране :

1.Той сравнява последователно всичка двойка съседни елементи една с друга.

2.Ако се окаже, че вторият елемент е по-голям местата им се разменят.

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

Insertion Sort

Този метод е подобен на методът на мехурчето, но е по-ефективен и намалява броя на свавняванията.

1.Даден елемент се сравнява съсъс всички по-големи елементи, докато не се открие елемент, по-малък от него.По този начин при всяка проверка първия елемент от неподредения подмасив се прехвърля в подредения подмасив, и с вмъква на определеното му място.

За редици от n елемента ще са нужни n-1 pроверки, за да се сортира целия масив. Подходящ е за сортиране на редици до 30 елемента.

Алгоритмите в действие

И накрая ето еднa доста забавна поредица от видеа,която визиализира алгоритмите на сортиране чрез танци :)

Selection Sort

Merge Sort

Quick Sort

Bubble Sort

Insertion Sort


to be continued ...