Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2011, 16:28   #1
Jane5610
Новичок
Джуниор
 
Регистрация: 20.12.2011
Сообщений: 1
По умолчанию Задача хитрая сортировка на Pascal и C++ - перевести на Java

Помогите, пожалуйста, нужно перевести задачу на Java, есть решение на Pascal и на C++


Текст Задачи.
Из массива путем однократного просмотра выбирается последовательность элементов, расположенных в порядке возрастания, переноситься в выходной массив и заменяется во входном на -1. Затем оставшиеся элементы включаются в полученную упорядоченную последовательность методом «погружения», когда очередной элемент путем ряда обменов «погружается» до требуемой позиции в уже упорядоченную часть массива.

Текст на C++
#include<stdio.h> #include<stdio.h>

void sort(int n);//прототип функции сортировки
void swap(int *p1,int *p2);//функция которая меняет местами две переменные
int enter[10]={39,12,41,21,53,10,8,45,60,50};//Входной массив int exit[10];
int exit[10];// Выходной массив
int main()
{ int k;
printf("Neotsortirovaniy massiv\n");
for(k = 0; k < 10; ++k) //обычный цикл с десятью итерациями (нужен для вывода входного массива)
printf("%d ",enter[k]); вывод элементов входного массива
printf("\n\n");
sort(10);// вызов функции сортировки
printf("Otsortirovaniy massiv \n");
for(int i = 0; i < 10; ++i)почти такой же цикл для вывода выходного массива
printf("%d ", exit[i]); соответственно вывод
printf("\n\n");
return 0;

}

void sort(int n)
{
int amax, imax, t = 0; максимальный элемент, номер макс элемента
amax = enter[0]; записываем нулевой элемент как максимальный
exit[0] = amax; переносим в выходной массив
for(int i = 0; i < n; ++i) цикл
{
imax = i; максимальный номер приравниваем к текущей итерации цикла
for(int j = i + 1; j < n; ++j)
if(enter[j] > amax) если значение больше максимального {
++t; наращиваем t на единицу
exit[t] = enter[j]; переносим элемент во второй массив
enter[imax] = -1; соответсвенно в первыый массив заносим -1
amax = enter[j]; заменяем максимальное значение
imax = j; заменяем номер максимального
enter[imax] = -1;
}
}
for(i = 0; i < n; ++i)
for(i = 0; i < n; ++i)проверка оставшихся элементов и перенос их.
{
if(enter[i] != -1)
{
++t;
exit[t] = enter[i];
enter[i] = -1;
}
}

// вставка погружением/ проверка выходного массива и престановка элементов в порядке возрастания
for(i = 0; i < n - t; ++i)
{
for(t = i + t; t > 0; --t)
{
if(exit[t] < exit[t - 1])
swap(&exit[t], &exit[t - 1]); перестановка элементов местами если они неправильно стоят с очки зрения порядка
}
}
}

void swap(int *p1, int *p2)
void swap(int *p1, int *p2) переставляем местами 2 элемента.
{
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}

Текст на Pascal

uses crt;
const nmax=100;
var a,b:array[1..nmax] of integer;
n,m,i,j,k:integer;
begin
randomize;
repeat
write('Размер массива до ',nmax,' n=');
read(n);
until n in [1..nmax];
writeln('Исходный массив:');
for i:=1 to n do
begin
a[i]:=random(50);
write(a[i]:4);
end;
writeln;
//выбираем по возрастанию
m:=1;
b[m]:=a[1];
for i:=2 to n do
if a[i]>b[m] then
begin
m:=m+1;
b[m]:=a[i];
a[i]:=-1;
end;
writeln('Исходный массив В:');
for i:=1 to m do
write(b[i]:4);
writeln;
//вставляем остальные
for i:=2 to n do
if a[i]<>-1 then
if a[i]>=b[m] then
begin
m:=m+1;
b[m]:=a[i];
end
else
begin
for j:=1 to m do
if b[j]>=a[i] then
begin
m:=m+1;
for k:=m downto j+1 do
b[k]:=b[k-1];
b[j]:=a[i];
break;
end;
end;
writeln('Результат сортировки:');
for i:=1 to m do
write(b[i]:4);
end.
Jane5610 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хитрая задача old slon Помощь студентам 4 13.05.2009 23:49
Хитрая задача Marsik Помощь студентам 11 21.11.2007 18:34