Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,60 @@
|
|||
program Quickselect_algorithm;
|
||||
|
||||
{$APPTYPE CONSOLE}
|
||||
|
||||
uses
|
||||
System.SysUtils;
|
||||
|
||||
function quickselect(list: TArray<Integer>; k: Integer): Integer;
|
||||
|
||||
procedure Swap(i, j: Integer);
|
||||
var
|
||||
tmp: Integer;
|
||||
begin
|
||||
tmp := list[i];
|
||||
list[i] := list[j];
|
||||
list[j] := tmp;
|
||||
end;
|
||||
|
||||
begin
|
||||
repeat
|
||||
var px := length(list) div 2;
|
||||
var pv := list[px];
|
||||
var last := length(list) - 1;
|
||||
|
||||
Swap(px, last);
|
||||
var i := 0;
|
||||
for var j := 0 to last - 1 do
|
||||
if list[j] < pv then
|
||||
begin
|
||||
swap(i, j);
|
||||
inc(i);
|
||||
end;
|
||||
|
||||
if i = k then
|
||||
exit(pv);
|
||||
|
||||
if k < i then
|
||||
delete(list, i, length(list))
|
||||
else
|
||||
begin
|
||||
Swap(i, last);
|
||||
delete(list, 0, i + 1);
|
||||
dec(k, i + 1);
|
||||
end;
|
||||
until false;
|
||||
end;
|
||||
|
||||
begin
|
||||
var i := 0;
|
||||
|
||||
while True do
|
||||
begin
|
||||
var v: TArray<Integer> := [9, 8, 7, 6, 5, 0, 1, 2, 3, 4];
|
||||
if i = length(v) then
|
||||
Break;
|
||||
Writeln(quickselect(v, i));
|
||||
inc(i);
|
||||
end;
|
||||
Readln;
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue