Yeni

Delphi-də QuickSort çeşidləmə alqoritmini tətbiq etmək

Delphi-də QuickSort çeşidləmə alqoritmini tətbiq etmək

Proqramlaşdırmada rast gəlinən problemlərdən biri dəyərlərin bir sıra müəyyən bir qaydada sıralanmasıdır (artan və ya enən).

Çox "standart" çeşidləmə alqoritmləri olsa da, QuickSort ən sürətli biridir. Bir işə götürərək quicksort növlərini çıxarın bölün və strategiyanı fəth edin bir siyahını iki alt siyahıya bölmək.

QuickSort Alqoritmi

Əsas konsepsiya a adlanan serialdakı elementlərdən birini seçməkdir pivot. Pivənin ətrafında digər elementlər yenidən düzəldiləcəkdir. Pivotdan az hər şey pivotun sol tərəfinə - sol hissəyə köçürülür. Pivdən daha böyük hər şey doğru hissəyə keçir. Bu nöqtədə hər bölmə rekursivdir "tez sıralanır".

Delphi-də tətbiq olunan QuickSort alqoritmi:

proseduru QuickSort (var A: sıra Tam; iLo, iHi: tam);
var
Lo, Salam, Pivot, T: tam;
başlamaq
Lo: = iLo;
Salam: = iHi;
Pivot: = A (Lo + Salam) bölmək 2;
  təkrarlamaq
    edərkən ALo <Pivot etmək Inc (Lo);
    edərkən AHi> Pivot etmək Dec (Salam);
    əgər Lo <= Salam sonra
    başlamaq
T: = BÜTÜN;
ALo: = AHi;
AHi: = T;
Inc (Lo);
Dec (Salam);
    son;
  qədər Lo> Salam;
  əgər Salam> iLo sonra QuickSort (A, iLo, Salam);
  əgər Lo <iHi sonra QuickSort (A, Lo, iHi);
son;

İstifadə qaydası:

var
intArray: sıra tam;
başlamaq
SetLength (intArray, 10);
  // intArray-a dəyərlər əlavə edin
intArray0: = 2007;
  …
intArray9: = 1973;
  //növ
QuickSort (intArray, Low (intArray), High (intArray));

Qeyd: Təcrübədə, verilən serial artıq sıralanmağa yaxın olduqda QuickSort çox yavaş olur.

Əlavə iki çeşidləmə alqoritmini göstərən "Threads" qovluğunda "Trddemo" adlı Delphi ilə göndərilən bir demo proqramı var: Bubble sort və Selection Sort.