Thema: FreePascal Bubblesort Problem

Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.431 Beiträge
 
Delphi 7 Professional
 
#7

AW: Bubblesort Problem

  Alt 6. Mär 2018, 22:31
Bin mir nicht sicher, ob ich Dich richtig verstanden habe.

Gewünscht ist nicht: -90 -45 -30 -15 -7 0 7 15 30 45 90
sondern: -7 -15 -30 -45 -90 0 7 15 30 45 90

Oder mal ein Versuch es zu formulieren:

Zuerst mit dem vorhandenen BubbleSort sortieren.

Dann den ersten Wert suchen, der >= 0 ist.

Anschließend den Teil des Arrays, der vor diesem Wert liegt, absteigend sortieren.

Ungetestete Idee:
Delphi-Quellcode:
procedure BubbleSort(var zorder: array of Integer; var faceorder: array of Integer);
var
  IntI, IntK: Integer;
  IntM : Integer;
begin

  for IntI := Low(zorder) to (High(zorder) - 1) do
  begin
    for IntK := (IntI + 1) to High(zorder) do
    begin
       if zorder[IntI] < zorder[IntK] then
       begin
         BubbleSwap(zorder[IntI], zorder[IntK]);
         BubbleSwap(faceorder[IntI], faceorder[IntK]);
       end;
    end;
  end;

  for IntM := Low(zorder) to (High(zorder)) do
  begin
    if zorder[IntM] >= 0 then break;
  end;
  IntM := IntM - 1;
  
  for IntI := Low(zorder) to (IntM - 1) do
  begin
    for IntK := (IntI + 1) to IntM do
    begin
       if zorder[IntI] > zorder[IntK] then
       begin
         BubbleSwap(zorder[IntI], zorder[IntK]);
         BubbleSwap(faceorder[IntI], faceorder[IntK]);
       end;
    end;
  end;
end;
  Mit Zitat antworten Zitat