Jak implementovat QuickSort v Javě?



Tento článek vám představí další algoritmus řazení Divide And Conquer, kterým je QuickSort In Java, a naváže na něj ukázkou.

QuickSort je algoritmus rozdělení a dobývání. V paradigmatu návrhu algoritmu Divide & Conquer rozdělíme problémy na dílčí problémy rekurzivně, pak dílčí problémy vyřešíme a nakonec zkombinujeme řešení a najdeme konečný výsledek. V tomto článku se zaměříme na QuickSort In

jak používat cloudovou platformu google

V tomto článku se budeme zabývat následujícími ukazateli,





Pojďme začít!

Při dělení problémů na dílčí problémy je třeba mít na paměti, že struktura dílčích problémů se oproti původnímu problému nemění.
Algoritmus Divide & Conquer má 3 kroky:



  • Rozdělit: Rozdělení problému na dílčí problémy
  • Conquer: Rekurzivní řešení dílčích problémů
  • Kombinujte: Spojením řešení získáte konečný výsledek

Obrázek - Rychlé řazení v Javě - Edureka

Existují různé algoritmy založené na paradigmatu rozděl a panuj. Mezi nimi je i rychlé řazení a sloučení.

Ačkoli nejhorší časová složitost QuickSortu je O (n2), což je více než mnoho jiných třídicích algoritmů jako Merge Sort a Heap Sort, QuickSort je v praxi rychlejší, protože jeho vnitřní smyčku lze efektivně implementovat na většině architektur a ve většině reálná data.



Pojďme si promluvit o implementaci algoritmu Quick sort. Algoritmy Quicksort přebírají prvek pivot a rozdělují pole kolem prvku pivot. Existuje mnoho variant Quicksotu, které závisí na tom, jak si vyberete otočný prvek. Existuje několik způsobů, jak vybrat otočný prvek:

  • Výběr prvního prvku
  • Vyberte poslední prvek
  • Výběr náhodného prvku
  • Výběr středního prvku

Další důležitou věcí k pochopení je funkce partition () v algoritmu Quick sort. Funkce oddílu, která vezme otočný prvek, umístí jej do správné polohy, přesune všechny prvky menší než otočný prvek doleva a všechny prvky větší doprava. Quicksort to trvá lineárně.
Poté je pole rozděleno na dvě části od otočného prvku (tj. Prvky menší než otočné a prvky větší než otočné) a obě pole jsou rekurzivně tříděna pomocí algoritmu Quicksort.

Nyní, když chápeme fungování algoritmu QuickSort. Pojďme pochopit, jak implementovat algoritmus Quicksort v Javě.

co je jframe v java

QuickSort Funkce:

/ * Funkce Quicksort vyžaduje třídění pole s nejnižším a nejvyšším indexem * /

void sort (int arr [], int lowIndex, int highIndex) {// until lowIndex = highIndex if (lowIndex

Nyní se podívejme na kód rozdělení, abychom pochopili, jak to funguje.

Rozdělit Kód

V kódu dělení vybereme poslední prvek jako otočný prvek. Projdeme celé pole (tj. V našem případě použijeme proměnnou j). Sledujeme poslední nejmenší prvek v poli (tj. V našem případě používáme proměnnou i). Pokud najdeme jakýkoli prvek menší než pivot, přesuneme aktuální prvek a [j] s arr [i], jinak budeme pokračovat v pohybu.

int partition (int arr [], int lowIndex, int highIndex) {// Vytvoření posledního prvku jako pivot int pivot = arr [highIndex] // Použití i ke sledování menších prvků z pivot int i = (lowIndex-1) pro (int j = lowIndex j

Nyní, když jste pochopili funkci Quicksort a funkci oddílu, pojďme se rychle podívat na celý kód

QuickSort Java kód

třída QuickSort {// Metoda rozdělení int oddíl (int arr [], int lowIndex, int highIndex) {int pivot = arr [highIndex] int i = (lowIndex-1) pro (int j = lowIndex j

// Způsob řazení

void sort (int arr [], int lowIndex, int highIndex) {if (lowIndex

// Metoda tisku pole

static void printArray (int arr []) {int n = arr.length for (int i = 0 i

// Hlavní metoda

public static void main (String args []) {int arr [] = {101, 37, 68, 29, 11, 5} int n = arr.length QuickSort ob = new QuickSort () ob.sort (arr, 0, n-1) System.out.println ('seřazené pole') printArray (arr)}}

Výstup:

Výstup - Rychlé řazení v Javě - Edureka

Nyní po provedení výše uvedeného programu Java byste pochopili, jak funguje QuickSort a jak jej implementovat v Javě.Tak jsme dospěli ke konci tohoto článku o „Quicksort v Javě“. Pokud se chcete dozvědět více,podívejte se na Edureka, důvěryhodná online vzdělávací společnost. Školicí a certifikační kurz Edureka Java J2EE a SOA je navržen tak, aby vás vyškolil jak pro základní, tak pro pokročilé koncepty Java, spolu s různými rámci Java, jako je Hibernate & Spring.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu a my se vám ozveme co nejdříve.