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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2013, 20:23   #11
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
понимаете мне нужно, чтобы массив передавался, а не определялся рандомно в самой процедуре
Не понимаю....
Код:
 quickSort1(lst,1,max div 2, max div 2 + 1, max);
Это разве не передача массива?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 10.12.2013, 20:27   #12
Karl__
Пользователь
 
Регистрация: 01.12.2013
Сообщений: 40
По умолчанию

Мне нужно именно к этому коду адаптировать, так требуют.
Код:
Uses Crt;
Const		N = 50;
Type 		T_Mas = Array [1..N] of Integer;
Var		Mas	: T_Mas;
		Kol	: Integer;

				
Procedure Count (Var Kol:Integer);
{Процедура определения размерности массива}
Var		IOR	: Word;
Begin
Write('Введите размерность массива: ');
	Repeat
		{$I-} ReadLn(Kol); {$I+}
		IOR := IOResult;
		If odd(IOR) or (Kol>N) Then
			WriteLn('Ошибка. Повторите ввод.')
	Until (Kol<=N) and (IOR=0)
End;


Procedure Filling (Kol:Integer; Var A: T_Mas);
{Процедура заполнения массива}
Var I : Integer;
Begin
	Randomize;
	For I := 1 To Kol Do A[I] := Random(N)
End;


Procedure Print (Kol:Integer; A: T_Mas);
{Процедура вывода массива}
Var I : Integer;
Begin
	For I:=1 to Kol do Write (A[I], ' ')
End;

procedure 
{................процедура быстрой сортировки..........}

Begin
	ClrScr;
	Count(Kol);
	Filling(Kol, Mas);
	WriteLn('Исходный массив'); Print (Kol, Mas);
	{................процедура быстрой сортировки..........}
	WriteLn;
	WriteLn('Отсортированный массив'); Print (Kol, Mas);
	Repeat until KeyPressed
End.
Karl__ вне форума Ответить с цитированием
Старый 10.12.2013, 20:37   #13
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:
Begin
	ClrScr;
	Count(Kol);
	Filling(Kol, Mas);
	WriteLn('Исходный массив'); Print (Kol, Mas);
	{................процедура быстрой сортировки..........}
        quickSort1(Mas,1,Kol div 2, Kol div 2 + 1, Kol)
	WriteLn;
	WriteLn('Отсортированный массив'); Print (Kol, Mas);
	Repeat until KeyPressed
End.
То, что нужно?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 10.12.2013, 20:50   #14
Karl__
Пользователь
 
Регистрация: 01.12.2013
Сообщений: 40
По умолчанию

вроди да, а можете вставить свою процедуру в мой код последний, я уже боюсь ошибок наделать.
Karl__ вне форума Ответить с цитированием
Старый 10.12.2013, 20:58   #15
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:
Uses Crt;
Const		N = 50;
Type 		T_Mas = Array [1..N] of Integer;
Var		Mas	: T_Mas;
		Kol	: Integer;

				
Procedure Count (Var Kol:Integer);
{Процедура определения размерности массива}
Var		IOR	: Word;
Begin
Write('Введите размерность массива: ');
	Repeat
		{$I-} ReadLn(Kol); {$I+}
		IOR := IOResult;
		If odd(IOR) or (Kol>N) Then
			WriteLn('Ошибка. Повторите ввод.')
	Until (Kol<=N) and (IOR=0)
End;


Procedure Filling (Kol:Integer; Var A: T_Mas);
{Процедура заполнения массива}
Var I : Integer;
Begin
	Randomize;
	For I := 1 To Kol Do A[I] := Random(N)
End;


Procedure Print (Kol:Integer; A: T_Mas);
{Процедура вывода массива}
Var I : Integer;
Begin
	For I:=1 to Kol do Write (A[I], ' ')
End;


{................процедура быстрой сортировки..........}
procedure quicksort1(var a: T_Mas; Lo,Hi, Lo1, Hi1: integer);

  procedure sort1(l1, r1, l2, r2: integer);
  var
    i,j,x,y: integer;
  begin
    {сортировка по возрастанию}
    i:=l1; j:=r1; x:=a[random(r1-l1+1)+l1]; 
    repeat
      while a[i]<x do i:=i+1; 
      while x<a[j] do j:=j-1;
      if i<=j then
      begin
        if a[i] > a[j] then
        begin
          y:=a[i]; a[i]:=a[j]; a[j]:=y;
        end;
        i:=i+1; j:=j-1;
      end;
    until i>=j;
    if l1<j then sort1(l1,j, l2, r2);
    if i<r1 then sort1(i,r1, l2, r2);
   
  {сортировка по убыванию}
   i:=l2; j:=r2; x:=a[random(r2-l2+1)+l2];
   repeat
      while a[i]>x do i:=i+1; 
      while x>a[j] do j:=j-1;
      if i<=j then
      begin
        if a[i] < a[j] then 
        begin
          y:=a[i]; a[i]:=a[j]; a[j]:=y;
        end;
        i:=i+1; j:=j-1;
      end;
   until i>=j;
   if l2<j then sort1(l1, r1, l2,j);
   if i<r2 then sort1(l1, r1, i,r2);
  end;

begin {quicksort1};
  randomize;
  sort1(Lo,Hi,Lo1,Hi1);
end; {quicksort1}

Begin
	ClrScr;
	Count(Kol);
	Filling(Kol, Mas);
	WriteLn('Исходный массив'); Print (Kol, Mas);
	{................процедура быстрой сортировки..........}
        quickSort1(Mas,1,Kol div 2, Kol div 2 + 1, Kol);
	WriteLn;
	WriteLn('Отсортированный массив'); Print (Kol, Mas);
	Repeat until KeyPressed
End.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 10.12.2013, 21:31   #16
Karl__
Пользователь
 
Регистрация: 01.12.2013
Сообщений: 40
По умолчанию

Ура!
Karl__ вне форума Ответить с цитированием
Старый 14.12.2013, 10:07   #17
Karl__
Пользователь
 
Регистрация: 01.12.2013
Сообщений: 40
Смущение итерации

Последний вопрос где разместить счётчики итераций, чтобы при выводе отсортированного массива выводилось количество проходов, это необходимо для сравнения временной сложности.
Karl__ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Сортировка двумерного массива по столбцам методом быстрой сортировки( Хоара) и пирамидальной. tworc22 Помощь студентам 3 28.10.2011 23:05
Сортировка Хоара(для объектов класса) m9yt Общие вопросы C/C++ 0 02.06.2010 18:45
быстрая сортировка настолько быстрая Serg12 Помощь студентам 8 28.03.2010 21:31
сортировка массива Методом Хоара (быстрой сортировкой) wild-weight Паскаль, Turbo Pascal, PascalABC.NET 3 26.09.2009 16:46