Quick sort rendezési algoritmus

A Quick Sort rendezési algoritmus az egyik leggyakrabban használt listarendező algoritmus.

A Visual Studio-ban készített kód lefutása után láthatjuk a képen alul a parancsmezőben, hogy a kódban megadott listát növekvő sorrendbe rendezi (teljes képernyős nézés az ajánlott).

Quick Sort működési elv (lenyíló tartalom - kattints a jobb szélső + ikonra)

A Quick Sort algoritmus egy elválasztásos rendezési algoritmus, amely az „oszd meg és uralkodj” (divide and conquer) elvet alkalmazza. A működési elve a következő lépésekből áll:

1. Pivot kiválasztása
A Quick Sort első lépése a pivot elem kiválasztása. A pivot lehet bármi az adott listában, például az első, az utolsó, vagy a középső elem. A pivot elem lesz az alap, amely alapján az elemeket rendezni fogjuk.

2. Particionálás (Elválasztás)
A következő lépésben az algoritmus a pivot elem köré rendezi az elemeket:

Az összes olyan elemet, amely kisebb, mint a pivot, a pivot elé helyezi.
Az összes olyan elemet, amely nagyobb, mint a pivot, a pivot mögé helyezi.
Ezután a pivot helyet cserél a listában, így az véglegesen a megfelelő helyére kerül.

3. Rekurzív rendezés
Miután a pivot a megfelelő helyre került, az algoritmus rekurzívan meghívja magát a pivot bal és jobb oldalán lévő részekre (a pivot nem kerül újra rendezésre, mert már a megfelelő helyen van).

Az algoritmus újra végigmegy a kisebb és nagyobb elemek rendezésén a bal és jobb részekben.
A rekurzió folytatódik, amíg a listák nem tartalmaznak már több, mint egy elemet, ekkor azok rendezettek lesznek.

4. Befejezés
A rekurzió minden egyes szinten befejeződik, amikor minden részlista már rendezett. Az algoritmus végül egy rendezett listát ad vissza a részlisták egyesítésével.

Kódmag: (lenyíló tartalom - kattints a jobb szélső + ikonra)
def quick_sort(list):
    if len(list) <= 1:
        return list
    else:
        pivot = list[len(list) // 2]
        left = []
        middle = []
        right = []

        for x in list:
            if x < pivot:
                left.append(x)
            elif x == pivot:
                middle.append(x)
            else:
                right.append(x)

        return quick_sort(left) + middle + quick_sort(right)

# Példa a használatra
list = [10, 15, 4,21, 17,36, 2, 27, 45, 33, 29, 41, 9, 1, 5]
sorted_list = quick_sort(list)
print("Rendezett lista:", sorted_list)