[comp.lang.pascal] Help w/Sort Assigment[D[D[D[D[D[D[C[Cnment

robby@nuchat.sccsi.com (Robert Oliver Jr.) (05/30/91)

Hello!
 
   I need some help. I'm using a 286 with a math coprocessor.  The code is
running under Turbo Pascal 6.0.  I thank it is best to so the code and then
explane the problem.
 
program tsort;
uses Crt,dos;
type
  list= array[1..20] of integer;
  list1=array[1..20] of integer;
var
  data: list;
  data1:list1;
  i: integer;
procedure quicksort(var a: list; Lo,Hi: integer);
 
procedure sort(left,right: integer);
var
  index,match,curent,pos: integer;
  test:longint;
begin
  index:=left;
  match:=right;
  curent:=a[(left+right) DIV 2];
  {test:=data1[(left+right)div 2];
  test:=((left+right)div 2);}
  repeat
    while a[index]<curent do index:=index+1;
    while curent<a[match] do match:=match-1;
    data1[((left+right)Div 2)]:=index;
    test:=index+1;
    if index<=match then
    begin
      pos:=a[index];
      a[index]:=a[match];
      a[match]:=pos;
      index:=index+1;
      match:=match-1;
    end;
  until index>match;
  data1[((left+right)Div 2)]:=index;
  if left<match then sort(left,match);
  if index<right then sort(index,right);
end;
 
begin {quicksort};
  sort(Lo,Hi);
end;
 
begin {qsort}
  clrscr;
  Write('Now generating 20 random numbers...');
  Randomize;
  writeln;writeln;
  for i:=1 to 20 do data[i]:=Random(2500);
  for i:=1 to 20 do begin
    gotoxy(1,i+3);
    write(data[i]);
  end;
  quicksort(data,1,20);
  gotoxy(1,3);
  write('Indata        Outdata          Sortdata       postion');
  for i:=1 to 20 do begin
    gotoxy(15,i+3);
    write(data1[i]);
    gotoxy(35,i+3);
    Write(data[i]{:8});
    gotoxy(50,i+3);
    write(i);
  end;
  
end.
 
(*************** This is what the code is producing **********************)
 
Now generating 20 randomm numbers......
 
Indata               Outdata             Sortdata          Postion
1871                 2                     131                1
246                  3                     246                2
131                  2                     276                3
1119                 5                     327                4
1102                 6                     430                5
1848                 7                     474                6
1407                 8                     563                7
2101                 8                     848                8
276                  10                    1102               9
2450                 14                    1119               10
327                  12                    1407               11
1511                 13                    1511               12
1544                 14                    1544               13
1854                 14                    1560               14
1846                 16                    1846               15
563                  17                    1848               16
848                  18                    1854               17
430                  19                    1871               18
474                  20                    2101               19
1560                 -10320                2450               20
 
(****************** This is what the code is to do ************************)
 
Now generating 20 randomm numbers......
 
Indata               Outdata             Sortdata          Postion
1871                 18                    131                1
246                  2                     246                2
131                  1                     276                3
1119                 10                    327                4
1102                 9                     430                5
1848                 16                    474                6
1407                 11                    563                7
2101                 19                    848                8
276                  3                     1102               9
2450                 20                    1119               10
327                  4                     1407               11
1511                 12                    1511               12
1544                 13                    1544               13
1854                 17                    1560               14
1846                 15                    1846               15
563                  7                     1848               16
848                  8                     1854               17
430                  5                     1871               18
474                  6                     2101               19
1560                 14                    2450               20
 
What am I doing wrong?
How can I correct the Bug???????????
 
Thanks for the help....                             Robert Oliver
                                                    robby@nuchat.sccsi.com

devisser@cs.utwente.nl (Jan de Visser) (06/03/91)

In article <1991May30.052548.9870@nuchat.sccsi.com>, robby@nuchat.sccsi.com (Robert Oliver Jr.) writes:
|> Hello!
|>  
|>    I need some help. I'm using a 286 with a math coprocessor.  The code is
|> running under Turbo Pascal 6.0.  I thank it is best to so the code and then
|> explane the problem.
|>  
|> [ (lots of) code and (lots of) numbers deleted ]
|>   
|> What am I doing wrong?
|> How can I correct the Bug???????????
|>  
|> Thanks for the help....                             Robert Oliver
|>                                                     robby@nuchat.sccsi.com

Dear Robert,

Do you seriously expect people, which all have their own work to do, to debug YABQR (Yet Another
Boring Quicksort Routine) for you? Most of us have our own debugging to do! I will be happy
to give you a clue on details, which cause the trouble, but you'll first have to identify the source
of your problem. (Probably you won't need any more help by then ;).

Good Luck,

Jan. 

PS: Consult a book on algorithms. Maybe this will clear things up.