program SelectionSortDemo;
uses
SysUtils;
const
n = 100000;
var
i, j: LongInt;
A: array [1..n] of LongInt;
Count: array [0..999999] of LongInt;
tnach, tkonech: QWord;
begin
randomize;
for i := 1 to n do
A[i] := -500000 + Random(1000000);
tnach := GetTickCount64;
{ === СОРТИРОВКА ПОДСЧЁТОМ === }
{ 1. Обнуление счётчиков }
for i := 0 to 999999 do
Count[i] := 0;
{ 2. Подсчёт }
for i := 1 to n do
Inc(Count[A[i] + 500000]);
{ 3. Запись обратно в A }
i := 1;
for j := 0 to 999999 do
while Count[j] > 0 do
begin
A[i] := j - 500000;
Inc(i);
Dec(Count[j]);
end;
tkonech := GetTickCount64;
writeln('Время сортировки (Counting Sort): ', (tkonech - tnach) / 1000:0:3, ' сек');
writeln('Первые 5: ', A[1], ' ', A[2], ' ', A[3], ' ', A[4], ' ', A[5]);
writeln('Последние 5: ', A[n-4], ' ', A[n-3], ' ', A[n-2], ' ', A[n-1], ' ', A[n]);
end.
cHJvZ3JhbSBTZWxlY3Rpb25Tb3J0RGVtbzsKCnVzZXMKICBTeXNVdGlsczsKCmNvbnN0CiAgbiA9IDEwMDAwMDsKCnZhcgogIGksIGo6IExvbmdJbnQ7CiAgQTogYXJyYXkgWzEuLm5dIG9mIExvbmdJbnQ7CiAgQ291bnQ6IGFycmF5IFswLi45OTk5OTldIG9mIExvbmdJbnQ7CiAgdG5hY2gsIHRrb25lY2g6IFFXb3JkOwoKYmVnaW4KICByYW5kb21pemU7CiAgZm9yIGkgOj0gMSB0byBuIGRvCiAgICBBW2ldIDo9IC01MDAwMDAgKyBSYW5kb20oMTAwMDAwMCk7CgogIHRuYWNoIDo9IEdldFRpY2tDb3VudDY0OwoKICB7ID09PSDQodCe0KDQotCY0KDQntCS0JrQkCDQn9Ce0JTQodCn0IHQotCe0JwgPT09IH0KICB7IDEuINCe0LHQvdGD0LvQtdC90LjQtSDRgdGH0ZHRgtGH0LjQutC+0LIgfQogIGZvciBpIDo9IDAgdG8gOTk5OTk5IGRvCiAgICBDb3VudFtpXSA6PSAwOwoKICB7IDIuINCf0L7QtNGB0YfRkdGCIH0KICBmb3IgaSA6PSAxIHRvIG4gZG8KICAgIEluYyhDb3VudFtBW2ldICsgNTAwMDAwXSk7CgogIHsgMy4g0JfQsNC/0LjRgdGMINC+0LHRgNCw0YLQvdC+INCyIEEgfQogIGkgOj0gMTsKICBmb3IgaiA6PSAwIHRvIDk5OTk5OSBkbwogICAgd2hpbGUgQ291bnRbal0gPiAwIGRvCiAgICBiZWdpbgogICAgICBBW2ldIDo9IGogLSA1MDAwMDA7CiAgICAgIEluYyhpKTsKICAgICAgRGVjKENvdW50W2pdKTsKICAgIGVuZDsKCiAgdGtvbmVjaCA6PSBHZXRUaWNrQ291bnQ2NDsKCiAgd3JpdGVsbign0JLRgNC10LzRjyDRgdC+0YDRgtC40YDQvtCy0LrQuCAoQ291bnRpbmcgU29ydCk6ICcsICh0a29uZWNoIC0gdG5hY2gpIC8gMTAwMDowOjMsICcg0YHQtdC6Jyk7CiAgd3JpdGVsbign0J/QtdGA0LLRi9C1IDU6ICcsIEFbMV0sICcgJywgQVsyXSwgJyAnLCBBWzNdLCAnICcsIEFbNF0sICcgJywgQVs1XSk7CiAgd3JpdGVsbign0J/QvtGB0LvQtdC00L3QuNC1IDU6ICcsIEFbbi00XSwgJyAnLCBBW24tM10sICcgJywgQVtuLTJdLCAnICcsIEFbbi0xXSwgJyAnLCBBW25dKTsKZW5kLg==
NyAyMQoxIDIgNTQ3MTUyCjEgMyA1MDkxNTcKMSA0IDUzOTI4MgoxIDUgNTQxNjQ1ICAgICAgICAgCjEgNiA0NTg0MzMKMSA3IDM4NTE3M+KAqAoyIDMgMTMxNTI4CjIgNCA5MjczNQoyIDUgMTUwNTExCjIgNiA5NDQ0MAoyIDcgMTk0NTQyCjMgNCAyMTY2MDAKMyA1IDI3MjQwMQozIDYgMTU3MTc2CjMgNyAxMjQwNzcKNCA1IDU3Nzg1CjQgNiA5NzMyMwo0IDcgMjQyMjMyCjUgNiAxMzY2NjMKNSA3IDI4Mzg2Mgo2IDcgMTQ3NDI2
7 21
1 2 547152
1 3 509157
1 4 539282
1 5 541645
1 6 458433
1 7 385173
2 3 131528
2 4 92735
2 5 150511
2 6 94440
2 7 194542
3 4 216600
3 5 272401
3 6 157176
3 7 124077
4 5 57785
4 6 97323
4 7 242232
5 6 136663
5 7 283862
6 7 147426