Содржина[Крие][Прикажи]
Компјутерската наука е сè за разбирање на сложеноста на алгоритмите и структурите на податоци.
Имате список на ставки што треба да се подредат, но немате време или ресурси да користите покомплексен алгоритам за сортирање.
Сортирањето со вметнување е еден од наједноставните алгоритми за сортирање, но може да биде бавно за големи списоци.
Лесната имплементација и разбирањето го направија овој метод омилен меѓу програмерите. Совршен е за мали списоци или кога ви треба брзо решение.
Во овој блог пост, ќе ја разгледаме временската сложеност на сортирањето на вметнувањето. Овој алгоритам се користи за сортирање низи и има времетраење од O(n2). Ова значи дека временската сложеност се зголемува со големината на низата.
Сепак, овој алгоритам може да биде побрз често од другите алгоритми за сортирање, како што е брзото сортирање.
Ајде внимателно да погледнеме како функционира сортирањето со вметнување!
Што е алгоритам за сортирање со вметнување?
Еден елемент во исто време, сортирањето со вметнување генерира низа што може да се подредува, која често се нарекува листа.
На пример, сортирањето се применува во комплицирани компјутерски програми како што се компајлери, каде што редоследот на токените е важен за толкувањето на програмата.
Како функционира сортирањето со вметнување?
Кога користиме сортирање со вметнување за сортирање низа, алгоритмот започнува со наоѓање на најмалата ставка во списокот и вметнување во правилната позиција.
Потоа ја наоѓа следната најмалата ставка и ја вметнува во правилната позиција, и така натаму.
Алгоритмот работи на тој начин што ја навртува листата, споредувајќи ја секоја ставка со онаа што доаѓа пред неа.
Ако ставките се во погрешен редослед, алгоритмот ги заменува. Потоа проверува дали списокот е подреден, и ако е, алгоритмот завршува.
Во пракса, сортирањето со вметнување често се имплементира со користење на неколку линии код, што го прави популарен избор за сортирање мали низи. Сепак, треба да се земе предвид временската сложеност кога се користи овој алгоритам.
Пример:
Еве пример за тоа како функционира сортирањето со вметнување. Ќе ја користиме следната низа:
1, 2, 3, 4, 5, 6
Алгоритмот започнува со наоѓање на најмалата ставка во листата, која е 1. Потоа ја вметнува во правилната позиција, првата позиција. Потоа ја наоѓа следната најмала ставка, која е 2. Ја вметнува во правилната позиција, која е втората позиција.
Потоа ја наоѓа следната најмалата ставка, која е 3. Ја вметнува во правилната позиција, која е третата позиција.
Потоа ја наоѓа следната најмалата ставка, која е 4. Ја вметнува во правилната позиција, која е четвртата позиција, и така натаму. Списокот сега е подреден!
Од примерот можеме да видиме дека алгоритмот зема шест споредби и заменува за да ја подреди листата. Тоа е затоа што е потребно n2 споредби и замени за да се подреди список со n ставки. Во овој случај, n=6.
Како да се подобри сложеноста на времето за сортирање на вметнување?
Додека сортирањето на вметнување има времетраење од O(n2), може да се подобри со користење на подобар алгоритам за сортирање, како што е брзото сортирање.
Quicksort има време на траење O(n log n), што е многу побрзо од O(n2).
Меѓутоа, во некои случаи, сортирањето со вметнување може да биде побрзо од брзото сортирање.
На пример, ако списокот е веќе во ред, подредувањето со вметнување ќе потрае помалку време од брзото сортирање.
Во пракса, сортирањето со вметнување често се имплементира со користење на неколку линии код, што го прави популарен избор за сортирање мали низи.
Сепак, треба да се земе предвид временската сложеност кога се користи овој алгоритам.
Временски комплекси
Комплексност на најлош случај O(n2):
Временската сложеност се зголемува со големината на низата. Потребно е н2 споредби и замени за да се подреди список со n ставки.
На пример, ако имаме низа со големина 1000, алгоритмот ќе потрае 1,000,000 споредби и замени за да ја сортира низата.
Најдобра комплексност на случај O(n):
Временската сложеност е иста како и големината на влезната низа. Јас
t зема n споредби и заменува за да подреди список со n ставки. На пример, разгледајте низа со големина 5. Алгоритмот ќе потрае пет споредби и замени за да ја сортира низата.
Просечна сложеност на случајот O(n2):
Временската сложеност е помеѓу сложеноста на најлошиот и најдобриот случај во овој случај.
Потребно е н2 споредби и замени за да се подреди список со n ставки.
Така, сортирањето со вметнување е стабилен алгоритам за сортирање.
Зошто е стабилен сортирањето со вметнување?
Сортирањето на вметнување е стабилно бидејќи го зачувува редот на еднакви елементи во влезната низа.
Ова е важно за многу апликации, како што се пронаоѓање податоци или финансиска анализа. На пример, ако имаме две списоци со броеви и сакаме да ги споредиме, треба да се увериме дека редоследот на елементите е зачуван.
Ако списоците не се подредени, нема точно да ги споредуваме.
Оставете Одговор