01.11.2014, 20:18 | #1 (permalink) |
Новичок
Регистрация: 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; |
01.11.2014, 20:18 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Эти посты имеют сходства с вашей темой, можете их полистать Сортировка автозагрузки Массив, сортировка Сортировка массива Сортировка на C# Нужна помощь, сортировка в Delphi Сортировка в Vista |
04.11.2014, 16:42 | #2 (permalink) |
VIP user
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
|
Ну чисто в теории можно. Попробуй почитать книгу Кнута, том 3 если не ошибаюсь, там весь том по всяким сортировкам. куча методов.
|
08.11.2014, 12:55 | #3 (permalink) |
Новичок
Регистрация: 30.11.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
К сожалению, нашел в этой книге только пункт "Сортировка путем вставки в дерево". Однако пузырьковая сортировка - обменная.
Возможно, я не там смотрю? |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|