Алгоритам је по дефиницији уређен скуп (Ово је веома важно) систематских операција која нам омогућава да направимо прорачун за проналажење решења за све проблеме истог типа. Другим речима, то је скуп инструкција који увек следи следећи образац:
- Прецизност: Морате јединствено и недвосмислено објаснити сваки корак или упутство.
- Коначно: Број инструкција за извршавање мора бити ограничен.
- Дефиниција: Исти улазни подаци морају увек давати исте излазне информације.
- Улаз: Број улазних елемената може бити нула или више.
- Резолуција: Увек треба да даје резултат, који ће бити излазни подаци.
Када се алгоритам имплементира у одређени програмски језик, он постаје програм који се може изводити на рачунару, па можемо рећи да је програм алгоритам или скуп алгоритама написаних на одређеном језику које рачунар може користити. У овом случају овај програм се назива рачунски алгоритам. С друге стране, ако за рад није потребан рачунар, говоримо о нерачунарским алгоритмима.
У нашем случају ћемо говорити о рачунски алгоритми.
Знајући шта је алгоритам, фокусираћемо се на алгоритме за сортирање, или шта је исто, на алгоритам који служи за сортирање и враћање листе којој су у почетку достављени насумично постављени елементи који су већ наручени.
Тхе 3 алгоритма сортирања најпознатији су Сортирање облачића или сортирање по облачићима, сортирање по избору или сортирање по избору и сортирање по уметању или сортирање по уметању. Сви се они сматрају једноставним алгоритмима или методама јер се решавају итерацијом или понављањем до броја н пута.
1. Сортирање мехурића или сортирање по мехурициУзимајући као пример низ са четири вредности, у овом случају ради једноставности четири броја видећемо како алгоритам ради.
Низ = (4, 7, 8, 5, 9);
Желимо да га вратите поређано од највишег до најнижег, на пример (9, 8, 7, 5, 4).
Да бисмо то урадили, прво што морамо да урадимо је да питамо прве две вредности која је највећа. У случају да је друга вредност већа од прве, као што је случај, треба их заменити, с друге стране, ако су већ наручене, остављамо их какве јесу.
Тада би се исти поступак морао поновити са другом и трећом вредношћу. У овом случају трећа вредност је већа па бисмо је заменили, остављајући наш низ = (7, 8, 4, 5, 9).
Затим понављамо претходни корак са трећом и четвртом вредношћу, па их опет размењујемо. (7, 8, 5, 4, 9).
И на крају након прве итерације то би било: (7, 8, 5, 9, 4).
Још увек није уређено, међутим постигнуто је да последњи елемент, онај са десне стране целине, 4, ако је поређен као најмањи број од свих.
У следећој рунди да бисте наручили наш низ, више није потребно узимати у обзир последњи јер већ знамо да је уређен, па бисмо упоредили први и други елемент, затим други и трећи елемент, и на крају трећи и четврти елемент и низ би остали: (8, 7, 9, 5, 4).
Сада су последњи и претпоследњи елемент сортирани.
Радимо још један круг упоређујући прву и другу вредност, а затим другу и трећу, а низ изгледа овако: (8, 9, 7, 5, 4).
Последња три елемента су већ уређена, па је потребно још само једно окретање да би се низ оставио потпуно уређен: (9, 8, 7, 5, 4).
Овако је алгоритам бурбурја, који се тако назива јер се у сваком завоју последњи елемент подиже попут мехура и уређује.
Сада имплементирано у ЈаваСцрипт Врло је једноставно:
мехур функције (миАрраи) {вар там = миАрраи.ленгтх; фор (вар темп = 1; темп <сизе; темп ++) {фор (вар лефт = 0; лефт <(сизе - темп); лефт ++) {вар ригхт = лефт +1; иф (миАрраи [лефт] <миАрраи [ригхт] {сорт (миАрраи, лефт, ригхт);}}} врати миАрраи;}Прослеђујемо низ нашој функцији и унутар њега прво што треба да урадимо је да израчунамо његову величину, израчунамо број елемената у низу.
Затим креирамо спољну петљу која пролази кроз наш низ онолико пута колико елементи имају минус један (будући да је то време потребно да се потпуно наручи).
Интерно стварамо другу петљу која пролази кроз вредности упоређујући сваку са следећом и ако је она са леве стране мања од оне са десне стране, размењује их са функцијом сортирања коју ћемо видети следеће.
На крају враћа уређени низ.
сортирање функција (миАрраи, валуе1, валуе2) {вар темп = миАрраи [валуе1]; миАрраи [валуе1] = мојАрраи [валуе2]; миАрраи [валуе2] = темп; врати миАрраи;}где је вредност1 индекс прве ставке за размену, а вредност2 индекс друге ставке за размену.
2. Сортирање избораАлгоритам који ћемо видети у наставку не помера елементе један по један као у облачићу, већ прво пролази кроз комплетан низ, а затим бира правилан елемент за постављање према критеријумима које следимо (на пример, од највишег до најнижег) и поставља га директно на свој положај, па тако алгоритам добија име, одабиром, узимањем елемента и померањем једним покретом у правилан положај.
У истом примеру као и пре Арраи = (4, 7, 8, 5, 9) ако желимо да га поређамо од највишег до најнижег на пример, прво бисмо изабрали 9 и ставили га на прво место, а 4 би заузело последње позиција (9, 7, 8, 5, 4). У другом кругу би изабрао осмицу и заменио је са седмицом како би остао на исправној позицији. У следећим рундама не бих ништа мењао јер је већ наручено.
Код овог алгоритма би био следећи:
избор функције (миАрраи) {вар там = миАрраи.ленгтх; фор (вар темп = 0; темп <сизе -1; темп ++) {мајор = темп; фор (вар цхецк = темп +1; цхецк <сизе; цхецк ++) {иф (миАрраи [цхецк] <миАрраи [мајор] {мајор = цхецк;}} сортирај (миАрраи, мајор, цхецк);} врати миАрраи;}
Код ради слично као код облачића, али спољна фор петља пролази кроз вредности од 0 до Н-2 (исти су број корака као између 1 и Н-1 као у облачићу, али је операција другачија ) раде директно на елементима како би их довели у исправан положај при сваком завоју.
Број завоја неопходних да би се сви елементи наручили исти је као у Н-1 балону, јер након сваке итерације остављамо елемент постављен на његово место и онај који можемо занемарити у следећим завојима.
Међутим, мало смо изменили функцију сортирања да бисмо сачували кораке када откријемо да је неки елемент већ наручен:
сортирање функција (миАрраи, валуе1, валуе2) {иф (валуе1 == валуе2) {ретурн миАрраи; } вар темп = миАрраи [валуе1]; миАрраи [валуе1] = мојАрраи [валуе2]; миАрраи [валуе2] = темп; врати миАрраи;}Да бисмо то постигли, укључили смо петљу иф у којој проверава да ли се вредности подударају, односно да ли су већ наручене.
3. Сортирање уметањаКоначно ћемо видети најефикаснији алгоритам од ова три јер нам неће увек требати Н-1 итерација за постављање нашег низа као што ћемо видети доле.
Овај алгоритам за уметање функционише слично стављању карте у покер док се карте деле.
Обично наручујемо карте по оделима, а унутар њих према растућем редоследу на следећи начин:
Прво се дели карта, један елемент који се наручује (због јединствености). Затим, када постоје „ј“ елементи поређани од најмањег до највећег, узимамо елемент ј + 1 и упоређујемо га са свим елементима који су већ уређени. Ако пронађе мањи, будући да ће се већи помакнути удесно, овај елемент (ј + 1) се убацује, померајући се на остатак.
Тхе алгоритам за уметање преведено на ЈаваСцрипт језик је као што следи:
функција инсерт (миАрраи) {вар там = миАрраи.ленгтх, темп, плаце; фор (вар обј = 0; обј = 0 && миАрраи [место]> темп; место--) {миАрраи [место + 1] = мојАррај [место]; } миАрраи [место + 1] = темп; } врати миАрраи;}
Дакле, три једноставна алгоритма за наручивање и кода при имплементацији у ЈаваСцрипт.
Да ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен