Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Быстрая сортировка 
V
    Опции темы
ruman
  Дата 15.11.2006, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 15.11.2006

Репутация: нет
Всего: нет



Короче вот задачка никак не могу реализовать:

Тема задачки "Рекурсия"

  Составить программу, используя рекурсивную процедуру (функцию).
Упорядочить массив из m действительных чисел методом “быстрой сортировки”: выбрать какой-либо средний элемент и переставить элементы массива так, чтобы слева от выбранного остались только те элементы которые меньше него, а справа те, которые больше. Тем самым выбранный элемент оказы-вается на своем месте. После этого описанный алгоритм рекурсивно применяется к левой и правой час-тям массива.

Помогите !!! Зарание спасибо !!!   smile 

Это сообщение отредактировал(а) alexeis1 - 15.11.2006, 21:04
PM MAIL   Вверх
Rennigth
Дата 15.11.2006, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: нет
Всего: 76



Ну вообщето тебе сюда:
http://forum.vingrad.ru/Vingrad-help-center.html
хотя пока модераторы не переместили тему может кому время не жалко и поможет...


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
ruman
  Дата 15.11.2006, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 15.11.2006

Репутация: нет
Всего: нет



Короче вот задачка никак не могу реализовать:

Тема задачки "Рекурсия"

Составить программу, используя рекурсивную процедуру (функцию).
Упорядочить массив из m действительных чисел методом “быстрой сортировки”: выбрать какой-либо средний элемент и переставить элементы массива так, чтобы слева от выбранного остались только те элементы которые меньше него, а справа те, которые больше. Тем самым выбранный элемент оказы-вается на своем месте. После этого описанный алгоритм рекурсивно применяется к левой и правой час-тям массива.

Помогите !!! Зарание спасибо !!!     
PM MAIL   Вверх
ruman
Дата 15.11.2006, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 15.11.2006

Репутация: нет
Всего: нет



Простите незнал !!!! я тут первый раз !!! еще ра прошу свои извинения !!! Созда тему в хелп-центре !!! а эту уважаемые модераторы если можно удалите !!!
спасибо !!!
PM MAIL   Вверх
IvanoffAndrey
Дата 15.11.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 8.7.2006
Где: СГАУ

Репутация: нет
Всего: 2



Цитата

выбрать какой-либо средний элемент и переставить элементы массива так, чтобы слева от выбранного остались только те элементы которые меньше него, а справа те, которые больше. Тем самым выбранный элемент оказы-вается на своем месте. После этого описанный алгоритм рекурсивно применяется к левой и правой час-тям массива.

Как мне кажется ничего придумывать не надо вот реалиазация этого метода - есть в любой книге и на любом сайте, более того быстрая сортировка описана в Хелпе в Borland Pascal:
Код

program QuickSort;
Const a:array[1..5]of integer =(5,4,3,2,1);
var {A:array[1..10000] of integer;
} N,T:integer;
 Procedure Sort (p,q:integer);
 var i,j,r:integer;
 begin
 if p<q then begin
    r:=A[random(q-p)+p];    {‚­ҐбҐ­ЁҐ б«гз ©­®бвЁ};
    i:=p-1;
    j:=q+1;
    while i<j do begin
       repeat inc(i) until A[i]>=r;
       repeat dec(j) until A[j]<=r;
       if i<j then begin
          T:=A[i];
          A[i]:=A[j];
          A[j]:=T;
        end;
    end;
 Sort(p,j);
 Sort(j+1,q);
end;
end;
var i:integer;
begin
Sort(1,5);
for i:=1 to 5 do write(a[i],' ');
end.

О строчке 
Код
 r:=A[random(q-p)+p];   
Можно прочитать в DRBK.

--------------------
Размерность пространства есть число Pi и в каждой точке вселенной оно стремиться к этому числу.
PM MAIL   Вверх
sergejzr
Дата 15.11.2006, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sunvas
Дата 15.11.2006, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 7
Всего: 89



В ДРКБ смотрел? По-моиму там есть то, что надо. Вот:

Код

Program QuickSort; 
Var A  : array[1..1000] of integer; 
    N,T : integer;  
Procedure Sort(p,q : integer); {p,q — индексы начала и конца сортируемой части массива} 
Var i,j,r : integer; 
Begin 
 if p<q then {массив из одного элемента тривиально упорядочен} 
 begin 
  r:=A[p]; 
  i:=p-1; 
  j:=q+1; 
  while i<j do 
   begin 
    repeat 
     i:=i+1; 
    until A[i]>=r; 
    repeat 
     j:=j-1; 
    until A[j]<=r; 
    if i<j then 
     begin 
      T:=A[i]; 
      A[i]:=A[j]; 
      A[j]:=T; 
     end; 
   end; 
  Sort(p,j); 
  Sort(j+1,q); 
 end; 
End; 
Begin 
 {Определение размера массива A — N) и его заполнение} 
 … 
 {запуск сортирующей процедуры} 
 Sort(1,N); 
 {Вывод отсортированного массива A} 
  … 
End. 


Это сообщение отредактировал(а) Sunvas - 15.11.2006, 20:46


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
ruman
Дата 15.11.2006, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 15.11.2006

Репутация: нет
Всего: нет



оооо пасибо !!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.