Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 01.11.2014, 20:18   #1 (permalink)
andrew_ryaba
Новичок
 
Регистрация: 30.11.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Delphi - сортировка бинарного дерева

Здравствуйте! Помогите, пожалуйста, с задачей.
Создать сбалансированное бинарное дерево. Разработать процедуру сортировки пузырьком элементов дерева.
Создание и вывод дерева:
Код:
type
u=^uzl;
uzl=record
i:integer;
l,r:u;
end;
var h:u; n:integer;
 
procedure ShowTree(h:u; x,y,w,f:integer);
const a=5;
var s:string;
begin
  if h<>nil then begin
  ShowTree(h^.l, x-w div 4, y+4*a, w div 2, 1);
  with form1.Canvas do begin
    brush.Color:=clblack;
    if f<>0 then
    begin
     moveto(x,y);
     lineto(x+f*(w div 2), y-4*a);
    end;
    ellipse(x-a,y+a,x+a,y-a);
    str(h^.i,s);
    brush.style:=bsClear;
    font.Name:='tahoma';
    font.Size:=10;
    textout(x,y,s);
  end;
  showtree(h^.r, x+w div 4, y+4*a, w div 2, -1);
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
function tree(k:integer):u;
var t:u;
begin
  if (k=0) then begin
  tree:=nil; exit; end;
  new(t);
  t^.i:=random(100);
  t^.l:=tree(k div 2);
  t^.r:=tree(k-(k div 2)-1);
  tree:=t;
end;
begin
n:=StrToInt(LabeledEdit1.Text);
h:=tree(n);
ShowTree(h,320,50,460,0);
end;
Вопрос в сортировке... В этом случае нельзя ведь как-нибудь приспособить алгоритм сортировки "пузырьком" односвязного списка?
andrew_ryaba вне форума   Ответить с цитированием

Старый 01.11.2014, 20:18
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Эти посты имеют сходства с вашей темой, можете их полистать

Сортировка автозагрузки
Массив, сортировка
Сортировка массива
Сортировка на C#
Нужна помощь, сортировка в Delphi
Сортировка в Vista

Старый 04.11.2014, 16:42   #2 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

Ну чисто в теории можно. Попробуй почитать книгу Кнута, том 3 если не ошибаюсь, там весь том по всяким сортировкам. куча методов.
Gruvi вне форума   Ответить с цитированием
Старый 08.11.2014, 12:55   #3 (permalink)
andrew_ryaba
Новичок
 
Регистрация: 30.11.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

К сожалению, нашел в этой книге только пункт "Сортировка путем вставки в дерево". Однако пузырьковая сортировка - обменная.
Возможно, я не там смотрю?
andrew_ryaba вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.