Сортирање елемената низа

Сортирање било којих ставки у односу на неко линеарно уређење може да помогне човеку или рачунару да брзо пронађе жељене ставке, на пример:

  • сортирање низа бројева у растућем или опадајућем редоследу,

  • лексикографско сортирање низа карактера,

  • сортирање листе на основу вредности чланова листе итд.

Сортирање елемената низа, тј. сортирање било које структуре података по задатом критеријуму је изузетно важна тема у програмирању, па се временом развио велики број алгоритама за сортирање. Неки од познатијих су:

  • алгоритам за сортирање избором (енгл. Selection Sort),

  • алгоритам за брзо сортирање (енгл. Quick Sort),

  • алгоритам за сортирање обједињавањем (енгл. Merge Sort),

  • алгоритам за сортирање нагомилавањем (енгл. Heap Sort),

  • алгоритам за сортирање уметањем (енгл. Insertion Sort),

  • алгоритам за сортирање мехуром (енгл. Bubble Sort),

  • алгоритам за сортирање разврставањем (енгл. Radix Sort) и многи други

Тема о алгоритмима сортирања је веома широка и изучава сложеност алгоритама, њихови брзину, заузеће ресурса, стабилност, прилагодљивост и др. Како би програмери боље сагледали постојеће алгоритме сортирања, настале су поделе по имплементацији, по методи сортирања, по дизајну парадигме, по сложености и др.

Већина савремених програмских језика поседује библиотечке функције за сортирање елемената низа. У програмском језику C постоји само једна библиотечка функција за сортирање елемената низа qsort(). Названа је по алгоритму за брже сортирање низа (енгл. Quicker Sort) који је имплементиран у оригиналној stdlib.h библиотеци (алгоритам за брже сортирање је варијанта алгоритма за брзо сортирање). Библиотечка функција qsort() захтева познавање рада са показивачима и функцијама, па њу нећеш користити у овом курсу.

Могао си до сада да закључиш да примена библиотечких функција може да резултира краћим и јаснијим (али не увек и ефикаснијим) програмским кодом. У овом поглављу биће већи изазов да сâм имплементираш неки од алгоритама за сортирање и разумеш функционалност тог алгоритма, него да научиш да позовеш једну библиотечку функцију.

Један од најједноставнијих алгоритама за сортирање је алгоритам за сортирање избором. Он је уједно и један од најједноставнијих за запис и имплементацију. Није ефикасан над великим скуповима података, али може да има предности у перформансама у односу на компликованије алгоритме у одређеним ситуацијама. Идеја је да се у првом кораку најмањи елемент постави на прво место, у другом најмањи од преосталих на друго место и тако редом док се низ не сортира. Пре него што започнеш са проучавањем и имплементацијом овог алгоритма у програмском језику C погледај следећи видео.