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;