QuickSort to algorytm dziel i rządź. W paradygmacie projektowania algorytmu Divide & Conquer, dzielimy problemy na podproblemy rekurencyjnie, następnie rozwiązujemy podproblemy i na koniec łączymy rozwiązania, aby znaleźć ostateczny wynik. W tym artykule skupimy się na QuickSort In
Poniższe wskazówki zostaną omówione w tym artykule,
Zaczynajmy!
Jedną rzeczą, o której należy pamiętać podczas dzielenia problemów na podproblemy, jest to, że struktura podproblemów nie zmienia się od pierwotnego problemu.
Algorytm Divide & Conquer ma 3 kroki:
tworzenie tablicy obiektów w java
- Podziel: dzielenie problemu na podproblemy
- Conquer: Rekurencyjne rozwiązywanie podproblemów
- Połącz: łączenie rozwiązań, aby uzyskać efekt końcowy
Istnieją różne algorytmy oparte na paradygmacie dziel i rządź. Wśród nich są szybkie sortowanie i sortowanie przez scalanie.
Chociaż w najgorszym przypadku złożoność czasowa QuickSort to O (n2), która jest większa niż wiele innych algorytmów sortowania, takich jak sortowanie przez scalanie i sortowanie na stosie, w praktyce QuickSort jest szybszy, ponieważ jego wewnętrzną pętlę można efektywnie zaimplementować na większości architektur i w większości dane ze świata rzeczywistego.
Porozmawiajmy o implementacji algorytmu szybkiego sortowania. Algorytmy szybkiego sortowania pobierają element przestawny i dzielą tablicę wokół elementu przestawnego. Istnieje wiele odmian Quicksot, które zależą od tego, jak wybierzesz element obrotu. Istnieje wiele sposobów wyboru elementu przestawnego:
- Wybór pierwszego elementu
- Wybierz ostatni element
- Wybór losowego elementu
- Wybieranie środkowego elementu
Kolejną ważną rzeczą do zrozumienia jest funkcja partition () w algorytmie szybkiego sortowania. Funkcja podziału przejmuje element pivot, umieszcza go we właściwej pozycji, przesuwa wszystkie elementy mniejsze od elementu pivot w lewo i wszystkie elementy większe w prawo. Szybkie sortowanie wymaga liniowego czasu, aby to zrobić.
Następnie tablica jest dzielona na dwie części z elementu pivot (tj. Elementy mniejsze niż pivot i elementy większe niż pivot), a obie tablice są rekurencyjnie sortowane za pomocą algorytmu Quicksort.
Teraz, gdy rozumiemy działanie algorytmu QuickSort. Zobaczmy, jak wdrożyć algorytm Quicksort w Javie.
Szybkie sortowanie Funkcjonować:
/ * Funkcja Quicksort wymaga sortowania tablicy według najniższego i najwyższego indeksu * /
void sort (int arr [], int lowIndex, int highIndex) {// Dopóki lowIndex = highIndex if (lowIndexPrzyjrzyjmy się teraz kodowi partycjonowania, aby zrozumieć, jak to działa.
Przegroda Kod
W kodzie partycjonowania wybierzemy ostatni element jako element przestawny. Przechodzimy przez całą tablicę (czyli używając zmiennej j w naszym przypadku). Śledzimy ostatni najmniejszy element tablicy (czyli w naszym przypadku używając zmiennej i). Jeśli znajdziemy jakikolwiek element mniejszy niż pivot, przesuwamy zamień aktualny element a [j] z arr [i], w przeciwnym razie kontynuujemy trawers.
int partition (int arr [], int lowIndex, int highIndex) {// Zmiana ostatniego elementu jako pivot int pivot = arr [highIndex] // Używanie i do śledzenia mniejszych elementów z pivot int i = (lowIndex-1) for (int j = lowIndex jTeraz, gdy zrozumiałeś już funkcję Quicksort i partycjonowanie, spójrzmy szybko na cały kod
Szybkie sortowanie Kod Java
class QuickSort {// Metoda partycji int partycja (int arr [], int lowIndex, int highIndex) {int pivot = arr [highIndex] int i = (lowIndex-1) for (int j = lowIndex j// Metoda sortowania
void sort (int arr [], int lowIndex, int highIndex) {if (lowIndex// Metoda drukowania tablicy
static void printArray (int arr []) {int n = arr.length for (int i = 0 i// Metoda główna
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 ('posortowana tablica') printArray (arr)}}Wynik:
Teraz po wykonaniu powyższego programu w Javie zrozumiałbyś, jak działa QuickSort i jak zaimplementować go w Javie.W ten sposób doszliśmy do końca artykułu „Szybkie sortowanie w Javie”. Jeśli chcesz dowiedzieć się więcej,Sprawdź autorstwa Edureka, zaufanej firmy zajmującej się edukacją online. Szkolenie i certyfikacja J2EE i SOA firmy Edureka ma na celu przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.
co to jest konstruktor w PythonieMasz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.