去除重复值的排序。
program InsertSorter;
var
m, n, i, j, p, left, right, middle : integer;
a : array[1 .. 100] of integer;
begin
readln(n);
for i := 1 to n do
read(a[i]);
p := 1;
for i := 2 to n do
begin
m := a[i];
left := 1;
right := p;
while left <= right do
begin
middle := (left+right) div 2;
if m < a[middle] then
right := middle-1
else if m > a[middle] then
left := middle+1
else
break;
end;
if m <> a[middle] then
begin
j := p;
while (j > 0) and (a[j] > m) do
begin
a[j+1] := a[j];
j := j-1;
end;
a[j+1] := m;
p := p+1;
end;
end;
for i := 1 to p do
write(a[i], ' ');
readln;
readln;
end.
program StraightSelectSorter;
var
n, i, j, p, t : integer;
a : array[1 .. 100] of integer;
begin
readln(n);
for i := 1 to n do
read(a[i]);
i := 1;
while i < n do
begin
p := i;
for j := i+1 to n do
if a[j] < a[p] then
p := j;
if a[p] <> a[i-1] then
begin
t := a[i];
a[i] := a[p];
a[p] := t;
i := i+1;
end
else
begin
t := a[n];
a[n] := a[p];
a[p] := t;
n := n-1;
end;
end;
if a[n] = a[n-1] then
n := n-1;
for i := 1 to n do
write(a[i], ' ');
readln;
readln;
end.
var
m, n, i, j, p, left, right, middle : integer;
a : array[1 .. 100] of integer;
begin
readln(n);
for i := 1 to n do
read(a[i]);
p := 1;
for i := 2 to n do
begin
m := a[i];
left := 1;
right := p;
while left <= right do
begin
middle := (left+right) div 2;
if m < a[middle] then
right := middle-1
else if m > a[middle] then
left := middle+1
else
break;
end;
if m <> a[middle] then
begin
j := p;
while (j > 0) and (a[j] > m) do
begin
a[j+1] := a[j];
j := j-1;
end;
a[j+1] := m;
p := p+1;
end;
end;
for i := 1 to p do
write(a[i], ' ');
readln;
readln;
end.
program StraightSelectSorter;
var
n, i, j, p, t : integer;
a : array[1 .. 100] of integer;
begin
readln(n);
for i := 1 to n do
read(a[i]);
i := 1;
while i < n do
begin
p := i;
for j := i+1 to n do
if a[j] < a[p] then
p := j;
if a[p] <> a[i-1] then
begin
t := a[i];
a[i] := a[p];
a[p] := t;
i := i+1;
end
else
begin
t := a[n];
a[n] := a[p];
a[p] := t;
n := n-1;
end;
end;
if a[n] = a[n-1] then
n := n-1;
for i := 1 to n do
write(a[i], ' ');
readln;
readln;
end.


浙公网安备 33010602011771号