王心远吧 关注:18贴子:329
  • 1回复贴,共1

回复:排序算法集

只看楼主收藏回复

{二叉树排序} 
type tree=^node; 
 node=record 
 data:integer; 
 lch,rch:tree; 
 end; 
var root:tree; f:text; 
procedure stree(var root:tree); 
var p,t:tree;k:integer; 
begin 
 read(f,k); 
 new(root); 
 root^.data:=k;root^.lch:=nil;root^.rch:=nil; 
 while not eof(f) do begin 
 read(f,k); 
 p:=root; 
 repeat 
 t:=p; 
 if k<p^.data then p:=p^.lch else p:=p^.rch; 
 until p=nil; 
 new(p); 
 p^.data:=k;p^.lch:=nil;p^.rch:=nil; 
 if k<t^.data then t^.lch:=p else t^.rch:=p; 
 end; 
end; 
procedure inorder(root:tree); 
begin 
 if root<>nil then begin 
 inorder(root^.lch); 
 write(f,root^.data:5); 
 inorder(root^.rch); 
 end; 
end; 
begin 
 assign(f,'stree.in'); 
 reset(f); 
 stree(root); 
 close(f); 
 assign(f,'stree.out'); 
 rewrite(f); 
 inorder(root); 
 close(f); 
end.


2楼2007-05-22 21:44
回复
    {插入排序} 
    {程序说明:链表操作,输入以-9999结尾} 
    program insert_sort; 
    type 
     link=^rec; 
     rec=record 
     data:integer; 
     next:link; 
     end; 
    var l:link; 
    procedure insert(var p1,p2:link; x:integer); 
    var p:link; 
    begin 
     new(p); 
     p^.data:=x; 
     p^.next:=p2; 
     p1^.next:=p; 
    end; 
    procedure sort(var p:link); 
    var i:integer; t,v:link; 
    begin 
     new(p); 
     new(t); 
     p^.data:=-maxint-1;p^.next:=t; 
     t^.data:=maxint;t^.next:=nil; 
     read(i); 
     while i<>-9999 do begin 
     v:=p; 
     while not((i>v^.data)and(i<=v^.next^.data)) do v:=v^.next; 
     insert(v,v^.next,i); 
     read(i); 
     end; 
    end; 
    procedure work(var p:link); 
    var v,y:link; 
    begin 
     v:=p; 
     p:=p^.next; 
     v^.next:=nil; 
     dispose(v); 
     v:=p; 
     repeat v:=v^.next; until v^.next^.next=nil; 
     y:=v^.next; 
     v^.next:=nil; 
     dispose(y); 
    end; 
    procedure view(p:link); 
    begin 
     repeat 
     write(p^.data:5); 
     p:=p^.next; 
     until p=nil; 
    end; 
    {main} 
    begin 
     sort(l); 
     work(l); 
     view(l); 
     readln; 
     readln; 
    end.


    3楼2007-05-22 21:45
    回复