All pastes #734227 Raw Edit

Stuff

public text v1 · immutable
·published 2007-10-12 14:39 UTC
rendered paste body
program zhopa;
type masyvas = array[1..1000] of integer;

function readshit(var arr : masyvas) : integer;
var i, j, n : integer;
begin
    n := 0;
    readln(j);
    randomize;
    for i := 1 to j do
    begin
        arr[i] := random(100);
        n := n + 1;
    end;
    readshit := n;
end;

procedure swap(var a, b : integer);
var t : integer;
begin
    t := a;
    a := b;
    b := t;
end;

procedure heapify(var arr : masyvas; i : integer; n : integer);
var left, right, max : integer;
begin
    left := 2 * i;
    right := left + 1;
    if (left <= n) and (arr[left] > arr[i]) then max := left
                                            else max := i;
    if (right <= n) and (arr[right] > arr[max]) then max := right;
    if max <> i then
    begin
        swap(arr[i], arr[max]);
        heapify(arr, max, n);
        writeln('hujak');
    end;
end;

procedure buildheap(var arr : masyvas; n : integer);
var i : integer;
begin
    for i := (n div 2) downto 1 do heapify(arr, i, n);
end;

procedure heapsort(var arr : masyvas; n : integer);
var i : integer;
begin
    buildheap(arr, n);
    for i := n downto 2 do
    begin
        swap(arr[1], arr[i]);
        n := n - 1;
        heapify(arr, 1, n);
        writeln('jablyk');
    end;
end;

procedure printshit(arr : masyvas; n : integer);
var i : integer;
begin
    for i := 1 to n do writeln(i, '. ', arr[i]);
end;

////main

var arr : masyvas;
    n : integer;
    
begin
    n := readshit(arr);
    writeln();
    printshit(arr, n);
    writeln();
    buildheap(arr, n);
    writeln();
    printshit(arr, n);
    writeln();
    heapsort(arr, n);
    writeln;
    printshit(arr, n);
    writeln;
    readln;
end.