Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

• Help others & share knowledge
• Earn cash & points
Solved

Bubble Sort - Accending and Deccending Order ?

Posted on 2000-04-13
850 Views
Hello,

I need some help on figuring out how to use a bubble sort method, to arrange all the numbers that a user enters in for (Number[x]) , in accending and deccending order.

Any help would be greatly appreciated.

-----------------------------

Program AccArray;

Uses CRT, dos;

Var   Number: array [1..5] of integer;
Arr: array [1..100] of integer;
numbers,numtotal,x,prevnumber,max,i,j:integer;
ans,Yes,No:char;

Begin

Repeat

clrscr;

numtotal:= 0 ;

Repeat
write('How many numbers (maximum = 100)? ') ;
writeln;

Begin
If numbers > 100 then
Begin
writeln('ERROR - Please enter a number between 1 and 100') ;
writeln;
End
End;

Begin
If numbers < 1 then
Begin
writeln('ERROR - Please enter a number between 1 and 100' );
writeln;
End
End;

Begin
If numbers < 101 then
If numbers > 0  then
numtotal:= 5;
End;

Until numtotal = 5  ;

For x:= 1 to numbers do
Begin

write('Enter  # ' , x  ,  ' : '  ) ;

End;

writeln;

{

I need some kind of bubble sort code in here, to arrange the numbers I entered for Number[x] in accending and deccending order.

}

writeln;
Write ('Would you like to enter more numbers (Y/N)? ') ;
writeln;

Until ans = 'N' ;

End.
0
Question by:R_K

Expert Comment

ID: 2714051
all you'll need, info/algorithem/source
enjoy
-kay
0

LVL 6

Accepted Solution

My name is Mud earned 200 total points
ID: 2714889
Program BubbleSort;
Uses
Crt;
Type
PointerToList = ^List;
List = Record
Value: Integer;
PrevItem: PointerToList;
NextItem: PointerToList;
End;
Var
Start,Previous,Current,Finish: PointerToList;
mValue: Integer;

{ Function to count the number of items in the list.}
Function Count_Items: Integer;
Var
I: Integer;
Begin
Current:=Start;
I:=0;
While Current <> Nil Do
Begin
I:=I+1;
Current:=Current^.NextItem;
End;
Count_Items:=I;
End;

{ Procedure to add items into the list }
Begin
{Check If this is the first time the structure is going to be created}
If Current = NIL Then
Begin
New(Current); {Get memory for the data}
With Current^ do  {Fill in the data}
Begin
Value:=NewValue;
NextItem:=NIL; {Since there are any more Up this points NIL}
PrevItem:=NIL  {Since there are any more Down this points NIL}
End;
Start:=Current;
Finish:=Current
End
Else  {Now this is not the first time}
Begin
New(Finish);
Finish^.PrevItem:=Current; {Current <- Finish}
Finish^.NextItem:=NIL;     {Finish -> Nil}
Current^.NextItem:=Finish; {Current -> Finish}
Current:=Finish;       {Current:=Finish}
With Current^ do  {Fill in the data}
Begin
Value:=NewValue;
End
End
End;

{ Procedure to sort the list using the bubble sort method }
Procedure Sort_List;
Var
Index1,Index2: Integer;
MaxNum: Integer;

Procedure ChangePlaces(Var Prev,Curr: PointerToList);
Var
Temp: Integer;
Begin
Temp:=Prev^.Value;
Prev^.Value:=Curr^.Value;
Curr^.Value:=Temp;
End;

Begin
MaxNum:=Count_Items;
Previous:=Start;
Current:=Finish;
For Index1:=1 To MaxNum-1 Do
Begin
For Index2:=MaxNum DownTo Index1+1 Do
Begin
If Previous^.Value > Current^.Value Then
ChangePlaces(Previous,Current);
Current:=Current^.PrevItem;
End;
Previous:=Previous^.NextItem;
Current:=Finish;
End
End;

{ Procedure to print the list }
Procedure Print_List;
Begin
Current:=Start;
While Current <> Nil Do
Begin
Write(Current^.Value,'  ');
Current:=Current^.NextItem;
End
End;

Procedure Dispose_All;
Begin
Current:=Start;
While Current^.NextItem <> Nil Do
Begin
Previous:=Current;
Current:=Current^.NextItem;
If Previous <> Nil Then
Dispose(Previous);
End;
Dispose(Current);
End;

{ The main program }
Begin
ClrScr;
Start := Nil;
{ Adding items to the list }
Repeat
Write (' Enter a Number : ');
If mValue <> 0 Then
Until mValue = 0;
{ Sorting the list }
Sort_List;
{ Printing the list }
Print_List;
Dispose_All;
End.
0

Expert Comment

ID: 2717399
Thanks a lot guys, that really helped me out.

Also whatboy, thanks for taking the time to give me an example, I really appreciate it!

0

Author Comment

ID: 2717410
opps, wrong user name :)

Thanks again!
0

Author Comment

ID: 2719804
The finished version of my program.

Thanks to psychorakz, whatboy, and my good friend Benjamin!

--------------------------
Program AccArray;

Uses CRT, dos;

Var   Number: array [1..5] of integer;
numbers,numtotal,x,prevnumber,max,i,j:integer;
ans,Yes,No:char;

Begin

Repeat

clrscr;

numtotal:= 0 ;

Repeat
write('How many numbers (maximum = 100)? ') ;
writeln;

Begin
If numbers > 100 then
Begin
writeln('ERROR - Please enter a number between 1 and 100') ;
writeln;
End
End;

Begin
If numbers < 1 then
Begin
writeln('ERROR - Please enter a number between 1 and 100' );
writeln;
End
End;

Begin
If numbers < 101 then
If numbers > 0  then
numtotal:= 5;
End;

Until numtotal = 5  ;

For x:= 1 to numbers do
Begin

write('Enter  # ' , x  ,  ' : '  ) ;

End;

writeln;

Begin
for i:= 1 to 100 do
for x:= 1 to numbers do
if number[x] = i then
writeln('Ascending Order - Array  ' , x , ' equals ' , i );
End;

writeln;

Begin
for i:= 100 downto 1 do
for x:= 1 to numbers do
if number[x] = i then
writeln('Descending Order - Array  ' , x , ' equals ' , i );
End;

writeln;
Write ('Would you like to enter more numbers (Y/N)? ') ;
writeln;

Until ans = 'N' ;

End.

0

Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Starting your own business is always a daunting process, and for most people it is brand new experience. Avoid the common pitfalls by following these tips to start on the road to success.
There's a lot of hype surrounding blockchain technology. Here's how it works and some of the novel ways it' s now being used - including for data protection.
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…
Six Sigma Control Plans