IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> сортировка двухпутевой вставкой
Гость
сообщение 28.05.2008 11:44
Сообщение #1


Гость






Мальчики, пожалуйста, дайте код сортировки двухпутевой вставкой. Пожалуйста!!!!Оень нужно!!!!!!!!
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Гость
сообщение 24.06.2008 16:39
Сообщение #2


Гость






Нашла код программы на С.

#include <stdlib.h>
#include <alloc.h>
#include <time.h>
#include <stdio.h>
#include <conio.h>
int tinsert (int *a, int n)
{
// возвращает 0, если нет памяти
int *x,i,j, left=n-1, right=n-1,t;
if((x=(int *) malloc((2*n-1)*sizeof(int)))==0) return 0;
x[n-1]=a[0];
for(i=1; i<n; i++)
{
t=a[i];
if(t>=a[0])
{
for(j=right; j>=0&&t<x[j]; j--)
x[j+1]=x[j];
x[j+1]=t;
right++;
}
else
{
for(j=left; j<=2*n-1&&t>x[j]; j++)
x[j-1]=x[j];
x[j-1]=t;
left--;
}
}
for(j=left; j<left+n; j++)
a[j-left]=x[j];
free(x);
return 1;
}
main()
{
int a[10], i;
clrscr ();
printf ("Сортировка методом вставок:\ n ");
randomize();
for(i=0; i<10; i++) a[i]=rand();
printf(" До сортировки :\n");
for(i=0; i<10; i++) printf(" %d ",a[i]);
printf("\n После сортировки :\n");
if(tinsert(a,10))
for(i=0; i<10; i++) printf(" %d ",a[i]);
else
printf("\n ошибка памяти ");
}



с помошью наполовину разбирающегося человека перевела на Паскаль. Но не работает программка sad.gif Помогите, пожалуйста!!!

program Project2;

{$APPTYPE CONSOLE}
uses
SysUtils,
windows;

const
n=10;
type
mas=array [1..n]of integer;
var
a:mas;
i:integer;

procedure insert (var a:mas);
var
t,i,j,left,right:integer;
x:array[1..2*n-1]of integer;
begin
left:=n-1;
right:=n-1;
for i:=1 to 2*n-1 do
x[i]:=0;
x[n-1]:=a[1];
for i:=1 to n do
begin
t:=a[i];
if t>=a[1] then
begin
j:=right;
while (j<=0) and (t<x[j]) do
j:=j-1;
x[j+1]:=x[j];
x[j]:=t;
right:=right+1;
end
else
begin
j:=left;
while (j<=2*n-1) and (t>x[j]) do
j:=j+1;
x[j-1]:=x[j];
x[j]:=t;
left:=left-1;
end;
end;
j:=left;
while j<left+n do
begin
a[j-left]:=x[j];
j:=j+1;
end;
end;

BEGIN
SetConsoleCp(1251);
SetConsoleOutputCp(1251);
writeln('введите ', n ,' чисел');
for i:=1 to n do
readln(a[i]);
writeln('отсортированные числа');
insert(a);
for i:=1 to n do
writeln(a[i]);
readln;
END.

 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 1.08.2025 18:38
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"