What's new

Help Quick Sort Algorithm

jaamoroso

Addict
Joined
Feb 4, 2017
Posts
65
Reaction
4
Points
99
Please paexplain po sa akin kung paano po ang step by step process sa pagsagot para ma sort po ang array na ito gamit ang quick sort algorithm (ung may left and right pointer) with pivot = 8
[12, 31, 25, 8, 37, 21 ,44, 46]
nakailang basa na ako sa google at panuod sa YøùTùbé pero wala silang mga left and right pointers. need po kasi ung may left and right pointers
salamat po
 
Para gamitin ang Quick Sort algorithm na may mga left and right pointers, sundan ang mga sumusunod na hakbang:

1. Piliin ang isang elemento sa array bilang pivot. Sa kasong ito, ang pivot ay 8.

2. Gumawa ng dalawang pointers, ang left pointer at right pointer. I-set ang left pointer sa simula ng array (0) at ang right pointer sa dulo ng array (7).

3. Ihabol ang mga pointers papunta sa gitna ng array habang ang mga elemento sa kaliwang bahagi ng left pointer ay mas mababa sa pivot at ang mga elemento sa kanang bahagi ng right pointer ay mas mataas sa pivot. Kung ang mga elemento sa kaliwang bahagi ng left pointer at sa kanang bahagi ng right pointer ay hindi tumutugma sa kondisyon na ito, i-move ang mga pointer patungo sa gitna ng array.

- Habang ang elemento sa kaliwang bahagi ng left pointer ay mas mababa sa pivot, i-increment ang left pointer.
- Habang ang elemento sa kanang bahagi ng right pointer ay mas mataas sa pivot, i-decrement ang right pointer.
- Kapag natagpuan ang mga elemento na hindi sumusunod sa kondisyon, i-swap ang mga elemento na ito.

4. Ulitin ang hakbang 3 hangga't ang left pointer ay hindi lumalagpas sa right pointer.

5. Kapag ang left pointer ay lumalagpas na sa right pointer, i-swap ang pivot sa elementong nasa right pointer.

6. Ihati ang array sa dalawang bahagi gamit ang index ng right pointer. Ang mga elemento sa kaliwa ng pivot ay magiging kaliwang bahagi ng array at ang mga elemento sa kanan ng pivot ay magiging kanang bahagi ng array.

7. Ulitin ang mga hakbang 1-6 para sa bawat bahagi ng array na nabuo pagkatapos ng paghati.

Gamitin ang mga sumusunod na hakbang para i-sort ang array na binigay:

Step 1: Pivot = 8
Step 2: Left pointer = 0, Right pointer = 7

Step 3:
- Ang elemento 12 ay mas mataas sa pivot, kaya i-decrement ang right pointer (Right pointer = 6)
- Ang elemento 46 ay mas mataas sa pivot, kaya i-decrement ang right pointer (Right pointer = 5)
- Ang elemento 44 ay mas mataas sa pivot, kaya i-decrement ang right pointer (Right pointer = 4)
- Ang elemento 37 ay mas mataas sa pivot, kaya i-decrement ang right pointer (Right pointer = 3)
- Ang elemento 8 ay pantay sa pivot, kaya i-increment ang left pointer (Left pointer = 1)

Step 4: Left pointer (1) ay hindi pa lumalagpas sa right pointer (3), magpatuloy ang pangangalaga ng pointers.

Step 3:
- Ang elemento 31 ay mas mataas sa pivot, kaya i-decrement ang right pointer (Right pointer = 2)
- Ang elemento 25 ay mas mababa sa pivot, kaya i-increment ang left pointer (Left pointer = 2)

Step 4: Left pointer (2) ay lumalagpas na sa right pointer (2), kaya itigil ang pangangalaga ng pointers.

Step 5: I-swap ang pivot (8) sa elementong nasa right pointer (25).

Ang array na nakuha ay [12, 25, 8, 37, 44, 46, 31, 21]. Ngayon, ang pivot na 8 ay nasa tamang posisyon at ang mga elemento sa kaliwa nito ay mas mababa, samantalang ang mga elemento sa kanan nito ay mas mataas.

Step 6: Ihati ang array sa dalawang bahagi:
  • Kaliwang bahagi: [12, 25, 8, 37]
  • Kanang bahagi: [44, 46, 31, 21]

Step 7: Ulitin ang mga hakbang 1-6 para sa kaliwang bahagi at kanang bahagi ng array.

Para sa kaliwang bahagi ([12, 25, 8, 37]):
Step 1: Pivot = 8
Step 2: Left pointer = 0, Right pointer = 3

Step 3:
- Ang elemento 12 ay mas mataas sa pivot, kaya i-decrement ang right pointer (Right pointer = 2)
- Ang elemento 37 ay mas mataas sa pivot, kaya i-decrement ang right pointer (Right pointer = 1)
- Ang elemento 8 ay pantay sa pivot, kaya i-increment ang left pointer (Left pointer = 1)

Step 4: Left pointer (1) ay hindi pa lumalagpas sa right pointer (1), magpatuloy ang pangangalaga ng pointers.

Step 3:
- Ang elemento 25 ay mas mataas sa pivot, kaya i-decrement ang right pointer (Right pointer = 0)

Step 4: Left pointer (1) ay lumalagpas na sa right pointer (0), kaya itigil ang pangangalaga ng pointers.

Step 5: I-swap ang pivot (8) sa elementong nasa right pointer (25).

Ang array na nakuha para sa kaliwang bahagi ay [25, 8, 12, 37].

Para sa kanang bahagi ([44, 46, 31, 21]):
Step 1: Pivot = 8
Step 2: Left pointer = 0, Right pointer = 3

Step 3:
- Ang elemento 44 ay mas mataas sa pivot, kaya i-decrement ang right pointer (Right pointer = 2)
- Ang elemento 46 ay mas mataas sa pivot, kaya i-decrement ang right pointer (Right pointer = 1)
- Ang elemento 31 ay mas mataas sa pivot, kaya i-decrement ang right pointer (Right pointer = 0)

Step 4: Left pointer (0) ay hindi pa lumalagpas sa right pointer (0), magpatuloy ang pangangalaga ng pointers.

Step 3:
- Ang elemento 21 ay mas mababa sa pivot, kaya i-increment ang left pointer (Left pointer = 1)

Step 4: Left pointer (1) ay lumalagpas na sa right pointer (0), kaya itigil ang pangangalaga ng pointers.

Step 5: I-swap ang pivot (8) sa elementong nasa right pointer (21).

Ang array na nakuha para sa kanang bahagi ay [21, 46, 31, 44].

Matapos ang dalawang hakbang, ang final sorted array ay [25, 8, 12, 37, 21, 46, 31, 44].
 
Back
Top