Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- procedure ByteSwap(a, b: ^UInt8; size_ptr: UInt32);
- var
- I: Integer;
- T: UInt8;
- AP, BP: ^Integer;
- begin
- for I := 0 To size_ptr - 1 do
- begin
- T := a^;
- a^ := b^;
- b^ := T;
- inc(a, sizeof(a^));
- inc(b, sizeof(b^));
- end;
- end;
- procedure Sort(list: ^UInt8; length: UInt32; size_ptr: UInt32; Comparator: function(a, b: Pointer): Boolean);
- var
- I, J, Size: Integer;
- begin
- size := length * size_ptr;
- for I := 0 to size - 1 do
- begin
- for J := 0 to size - i - size_ptr - 1 do
- begin
- if (comparator(list[j + size_ptr], list[j])) then
- begin
- ByteSwap(list[j + size_ptr], list[j], size_ptr);
- end;
- Inc(J, size_ptr - 1);
- end;
- Inc(I, size_ptr - 1);
- end;
- end;
- function compareInt(a, b: Pointer): boolean;
- begin
- Result := Integer(a^) < Integer(b^);
- end;
- function compareChar(a, b: Pointer): boolean;
- begin
- Result := Char(a^) < Char(b^);
- end;
- var
- TIA: TIntegerArray;
- TCA: Array of Char;
- begin
- TIA := [5, 6, 7, 4, 3, 8, 9, 2, 1, 10];
- Sort(@TIA[0], Length(TIA), sizeof(Integer), @compareInt);
- writeln(TIA);
- TCA := ['B', 'C', 'A', 'D'];
- Sort(@TCA[0], Length(TCA), sizeof(Char), @compareChar);
- writeln(TCA);
- end.
Advertisement
Add Comment
Please, Sign In to add comment