Увод у алгоритам сортирања уметања

Увод у алгоритам сортирања уметања

Инсертион Сорт је техника која функционише тако што користи сортирану подлисту и непрестано јој додаје вредност са неразврстане листе све док се цела листа не сортира.





Алгоритам почиње са првом ставком листе као сортираном подлистом. Затим упоређује следећи број са првим. Ако је већи, онда се убацује у први индекс. У супротном, остаје у индексу.





Трећа вредност се затим упоређује са друге две, а затим се убацује у исправан индекс. Овај процес се наставља све док се цела листа не сортира.





Ближи поглед на сортирање уметања

Горе наведени опис вам можда није имао смисла. Пример би вам требао помоћи да боље разумете.

Претпоставимо да имате списак: [39, 6, 2, 51, 30, 42, 7].



Алгоритам идентификује 39 као прву вредност сортиране подлисте. Евалуација затим прелази на другу позицију.

Повезано: Динамичко програмирање: примери, уобичајени проблеми и решења





6 се затим упоређује са 39. Пошто је 6 мање од 39, 6 се убацује у прву позицију, а 39 у другу. Нови редослед листа је након првог проласка:

[6, 39, 2, 51, 30, 42, 7]





Евалуација се сада пребацује на трећу позицију. 2 се упоређује са последња два броја и затим се убацује у десну позицију. Нови редослед листа је након другог проласка:

[2, 6, 39, 51, 30, 42, 7]

За трећи пролаз редослед листе је:

[2, 6, 39, 51, 30, 42, 7]

Процес се понавља све док се цела листа не сортира.

Погледајте доњи дијаграм који резимира ове операције:

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

Временска сложеност сортирања уметања је О (н2), баш као сортирање мехурића . Број поређења у најгорем случају је збир свих целих бројева од 1 до (н-1), дајући квадратни збир.

Имплементација кода

Питхон и Јава код у наставку приказује како можете имплементирати методу Инсертион Сорт.

Питхон:

def insertionSort(mylist):
for step in range(1, len(mylist)):
current_element = mylist[step]
position = step
while position > 0 and mylist[position - 1] > current_element:
mylist[position] = mylist[position - 1]
position = position - 1
mylist[position] = current_element

Јава:

void insertionSort(int[] myarray) {
int n = myarray.length;
for (int x = 1; x int key = myarray[x];
int y = x-1;
while ( (y > -1) && ( myarray [y] > key ) ) {
myarray [y+1] = myarray [y];
y--;
}
myarray[y+1] = key;
}
}

Боље кодирање помоћу псеудокода

Горе наведени примери кода дати су без икаквог псеудокода на који се можете позвати да бисте написали овај алгоритам на другим језицима. Већина програмера (укључујући аутора) воли да трчи до тастатуре након што им се „шапуће“ о томе како програм функционише.

Овај приступ је нажалост склон грешкама јер се програмска логика компликује. Како бисте волели да унапредите своју програмску игру тако што ћете научити да користите псеудокод?

Објави Објави Твеет Емаил Шта је псеудокод и како вас чини бољим програмером?

Мучите се да научите програмирање? Ухватите се у коштац са учењем псеудокода. Али шта је псеудокод и може ли заиста помоћи?

Прочитајте следеће
Повезане теме
  • Програмирање
  • Јава
  • Питхон
  • Кодирање Туториали
О аутору Јероме Давидсон(22 објављена чланка)

Јероме је писац особља на МакеУсеОф -у. Он покрива чланке о програмирању и Линуку. Он је такође ентузијаст за крипто и увек прати крипто индустрију.

како оживети литијум-јонску батерију лаптопа
Више од Јеромеа Давидсона

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили