КуицкСорт је алгоритам за поделу и освајање. У парадигми дизајна алгоритма Дивиде & Цонкуер, проблеме у под-проблеме делимо рекурзивно, затим решавамо под-проблеме и на крају комбинујемо решења да бисмо пронашли коначни резултат. У овом чланку ћемо се усредсредити на КуицкСорт Ин
Следећи смерници ће бити обрађени у овом чланку,
Почнимо!
Једна ствар коју морате имати на уму приликом поделе проблема на подпроблеме је да се структура подпроблема не мења од првобитног проблема.
Дивиде & Цонкуер алгоритам има 3 корака:
- Подјела: Разбијање проблема на подпроблеме
- Освојити: Рекурзивно решавање потпроблема
- Комбиновање: Комбиновање решења за постизање коначног резултата
унакрсно испитивање претраживача у селену вебдривер-у
Постоје различити алгоритми засновани на парадигми подели и освоји. Брзо сортирање и спајање су међу њима.
Иако је најгора временска сложеност КуицкСорт-а О (н2), што је више од многих других алгоритама за сортирање попут Мерге Сорт и Хеап Сорт, КуицкСорт је у пракси бржи, јер се његова унутрашња петља може ефикасно применити на већини архитектура и подаци из стварног света.
Разговарајмо о примени алгоритма за брзо сортирање. Алгоритми за брзо сортирање узимају елемент осовине и преграђују низ око елемента осовине. Постоји неколико варијација Куицксота, што зависи од тога како одаберете пивот елемент. Постоји више начина за одабир осовинског елемента:
- Брање првог елемента
- Изаберите последњи елемент
- Одабир случајног елемента
- Одабир средњег елемента
Следећа важна ствар коју треба разумети је функција партиције () у алгоритму за брзо сортирање. Функција партиције за узимање пивот елемента, поставља га у десни положај, помера све елементе мање од пивот елемента улево и све елементе веће удесно. Куицксорт-у је потребно линеарно време за то.
Тада је низ подељен на два дела од елемента пивот (тј. Елементи мањи од пивота и елементи већи од пивота) и оба низа се рекурзивно сортирају помоћу Куицксорт алгоритма.
Сада када разумемо рад алгоритма КуицкСорт. Хајде да разумемо како да применимо Куицксорт алгоритам на Јави.
КуицкСорт Функција:
/ * Куицксорт функција треба да се низ сортира по најнижем и највишем индексу * /
воид сорт (инт арр [], инт ловИндек, инт хигхИндек) {// До ловИндек = хигхИндек иф (ловИндекПогледајмо сада партицијски код да бисмо разумели како он функционише.
Подела Код
У коду за партиционирање изабраћемо последњи елемент као стожерни елемент. Прелазимо цео низ (тј. Користећи променљиву ј у нашем случају). Пратимо последњи најмањи елемент у низу (тј. Користећи променљиву и у нашем случају). Ако нађемо било који елемент мањи од пивота, померамо тренутни елемент а [ј] са арр [и], у супротном настављамо да се крећемо.
инт партиција (инт арр [], инт ловИндек, инт хигхИндек) {// Израда последњег елемента као пивот инт пивот = арр [хигхИндек] // Коришћење и за праћење мањих елемената из пивот инт и = (ловИндек-1) фор (инт ј = ловИндек јСад кад сте разумели функцију Куицксорт & партиције, дозволите нам да брзо погледамо комплетан код
КуицкСорт Јава Цоде
класа КуицкСорт {// Метода партиције инт партиција (инт арр [], инт ловИндек, инт хигхИндек) {инт пивот = арр [хигхИндек] инт и = (ловИндек-1) за (инт ј = ловИндек ј// Метода сортирања
воид сорт (инт арр [], инт ловИндек, инт хигхИндек) {иф (ловИндек// Метода за испис низа
како поставити пут до класе у јавистатиц воид принтАрраи (инт арр []) {инт н = арр.ленгтх фор (инт и = 0 и// Главни метод
публиц статиц воид маин (Стринг аргс []) {инт арр [] = {101, 37, 68, 29, 11, 5} инт н = арр.ленгтх КуицкСорт об = нев КуицкСорт () об.сорт (арр, 0, н-1) Систем.оут.принтлн ('сортирани низ') принтАрраи (арр)}}Излаз:
Сада бисте након извршавања горњег Јава програма схватили како КуицкСорт ради и како га применити у Јави.Тако смо дошли до краја овог чланка о „Брзом сортирању у Јави“. Ако желите да сазнате више,погледајте Едурека, поуздана компанија за учење на мрежи. Едурекин курс за обуку и сертификацију Јава Ј2ЕЕ и СОА осмишљен је тако да вас оспособи за основне и напредне Јава концепте, заједно са различитим Јава оквирима попут Хибернате & Спринг.
Имате питање за нас? Молимо вас да га помените у одељку за коментаре овог блога и јавићемо вам се што је пре могуће.