Array Olarak Tanımlı İnteger Büyükten Küçüğe sıralama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
raym0nd42
Üye
Mesajlar: 4
Kayıt: 21 Kas 2016 11:43

Array Olarak Tanımlı İnteger Büyükten Küçüğe sıralama

Mesaj gönderen raym0nd42 »

Üstadlar Tek boyutlu dizideki elemanları nasıl büyükten küçüğe sıralarım, diyelim ki

sayi:array[1..20] of integer=(5,8,7,4,2,6,9,10,11,25,13,19,222,378,65,62,63,87,98,41);
sirali:array[1..20] of integer;

Sayi Dizisinin Elemanlarını Siralı Dizisine Büyükten Küçüğe veya Küçükten Büyüğe nasıl Sıralayabilirim bunu konu alan bi kaynak biliyorsanız benimle pasylaşırmısınız
ertank
Kıdemli Üye
Mesajlar: 1711
Kayıt: 12 Eyl 2015 12:45

Re: Array Olarak Tanımlı İnteger Büyükten Küçüğe sıralama

Mesaj gönderen ertank »

Merhaba,

Kullandığınız Delphi sürümünü bildirmemişsiniz. Eğer kullandığınız Delphi sürümü 2009 ve sonrası ise aşağıdaki gibi bir yöntem kullanmanız mümkün olabilir.

Kod: Tümünü seç

uses
  System.Generics.Collections;

procedure TForm1.Button1Click(Sender: TObject);
var
  Sayi: TArray<integer>;
  i: Integer;
begin
  SetLength(Sayi, 20);
  Randomize();
  for i := Low(Sayi) to High(Sayi) do
    Sayi[i] := Random(99);

  TArray.Sort<integer>(Sayi);
end;
Yukarıdaki son satır çalıştıktan sonra Sayi içindeki değerler küçükten büyüğe sıralanmış olur.
erkutolga
Üye
Mesajlar: 3
Kayıt: 22 Mar 2021 04:03

Re: Array Olarak Tanımlı İnteger Büyükten Küçüğe sıralama

Mesaj gönderen erkutolga »

uses
System.SysUtils, System.Generics.Collections, System.Generics.Defaults, Vcl.StdCtrls;

procedure SortDoubles(Memo: TMemo);
var
Numbers: array[0..4] of Double;
i: Integer;
begin
// Örnek değerler atanıyor
Numbers[0] := 3.14;
Numbers[1] := 1.59;
Numbers[2] := 2.65;
Numbers[3] := 4.62;
Numbers[4] := 0.99;

// Büyükten küçüğe sıralama
TArray.Sort<Double>(Numbers, TComparer<Double>.Construct(
function(const Left, Right: Double): Integer
begin
Result := CompareValue(Right, Left); // Büyükten küçüğe sıralama
end
));

Memo.Lines.Add('Büyükten küçüğe sıralama:');
for i := 0 to High(Numbers) do
Memo.Lines.Add(Format('%.2f', [Numbers]));

// Küçükten büyüğe sıralama
TArray.Sort<Double>(Numbers, TComparer<Double>.Construct(
function(const Left, Right: Double): Integer
begin
Result := CompareValue(Left, Right); // Küçükten büyüğe sıralama
end
));

Memo.Lines.Add('Küçükten büyüğe sıralama:');
for i := 0 to High(Numbers) do
Memo.Lines.Add(Format('%.2f', [Numbers]));
end;

// Örnek kullanım:
procedure TForm1.Button1Click(Sender: TObject);
begin
SortDoubles(Memo1); // Memo1, form üzerindeki TMemo bileşeninizdir
end;
Cevapla