Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Сортировка одномерного массива (http://www.tehnari.ru/f41/t44174/)

Major_Pain 02.01.2011 16:17

Сортировка одномерного массива
 
Помогите решить задачу на сортировку одномерного массива, надо использовать метод, где надо найти сначало минимум и поставить его на 1 место и ....
задача:Дан массив с (n) . Переписать в мас¬сив х (n) все ненулевые элементы массива Затем упорядочить методом «выбора и перестановки» по возрастанию но¬вый массив

Вот моя версия, я хоть правильно думаю?

program o;const
n=10;
var
c,x:array[1..n] of Integer;
i,l,j,min,n_min,t,buf:integer;
begin
randomize;
for i:=1 to n do
begin
c[i]:=random(10);
write(c[i]);
end;
for i:=1 to n do
begin
for j:=1 to n do
if c[i]<>0 then
x[j]:=c[i];
writeln(x[j]);
end;
min:=100;
for j:=1 to n do
begin
if x[j]<min then
begin
min:=x[j];
n_min:=j;
end;
t:=x[n_min];
x[n_min]:=x[j];
x[j]:=t;
for j:=1 to n do
writeln('x=',x[j]);
end;
end.
Спасибо)

shrek=) 02.01.2011 16:50

Программа может выглядеть вот так, использована сортировка выбором
Код:

const
n=10;
var
c,x:array[1..n] of Integer;
i,l,k,j:integer;
begin
randomize;
for i:=1 to n do
begin
c[i]:=random(10);
write(c[i],' ');
end;
writeln ('Исходный массив');
writeln;
for i:=1 to n do begin
if c[i]>0 then
x[i]:=c[i];
write(x[i],' ');
end;
writeln ('Новый массив X');
writeln;
writeln ('Отсортированный массив');
for i:=1 to n-1 do begin
l:=i;
for j:=i+1 to n do
if x[j]<x[l] then
l:=j;
k:=x[i];
x[i]:=x[l];
x[l]:=k;
end;
for i:=1 to n do
write (x[i],' ' );
readln
end.


Vladimir_S 03.01.2011 13:17

Не моё, конечно, собачье дело, но так, вскользь... Касательно формирования массива Х.

В варианте от Major_Pain:
Цитата:

for i:=1 to n do
begin
for j:=1 to n do
if c[i]<>0 then
x[j]:=c[i];
writeln(x[j]);
end;
массив Х будет весь заполнен значением последнего ненулевого элемента массива С.

В варианте Shrek'а:
Цитата:

for i:=1 to n do begin
if c[i]>0 then
x[i]:=c[i];
write(x[i],' ');
end;
оба массива (Х и С) окажутся в итоге просто тождественными и никакого отбора не произойдет, потому что по умолчанию, как правило, объявленным переменным, включая элементы массивов, присваиваются нулевые значения.

Я уже давал полностью отлаженный вариант решения задачи: http://www.tehnari.ru/f41/t43977/#post435634 , но, поскольку это решение было проигнорировано и задача выложена повторно, я заключаю, что ко мне доверия нет. Ну ладно, как говорится, "насильно мил не будешь". Дело ваше.


Часовой пояс GMT +4, время: 07:57.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.