Can you give me a solution to sort numbers in ascending or in descending order without using an array, record, pointer and OOP? and also give me the source code about this question? make it in a simple way, easy to understand and short?

LVL 1
###### Who is Participating?

Commented:
If the purpose is to sort ONLY 5 numbers (or a equally small amount of numbers), the solution is Joe_h's.

But the normal process of sorting always involves, at last, any kind of array. One of the the simplest way to sort an array is this one:

For i:=1 to Max-1 do
For j:=i+1 to Max do
If Arr[j] < Arr[i]   then begin
Aux:=Arr[i];  Arr[i]:=Arr[j];  Arr[j]:=Aux;
end;

(provided you have Arr[] array of Max elements in it).

That solution works well for a reasonable small quantity of element, let's say, when Max is of a couple of hundreds, or so, but not much more.

If the size of the array increases too much, the algorithm is very slow, an can be accelerated MUCH MUCH MORE by using the Quicksort recursive procedure; although it's the fastest method, it has a problem: it's much more complex. If you still need another solution, just shout.  :)

0

Commented:
What did you mean by ( whithout array ) where did you store numbers ?

Motaz
0

Author Commented:
I mean the source code for sorting without using array,OOP ,files and pointer
if I want to input 5 number and want to sort it by ascending and decending uses procedure and function, you can use a recursive cycle.

no need to store number
0

Commented:
Where are the numbers to sort located then?
0

Commented:
You mean you keep your numbers in differrent variables???

Deny Styler.
0

Commented:
The quickest way to do it is to put it into an array, and to send
that array to a function sort(array) which would return the array
sorted.
0

Commented:
IHMO, without an array you will not get very far.
0

Commented:
You mean you just input your numbers on the screen, and then the program sorts them and write them in sorted order.
If so the only solution is to use a different variables, though that solution is for the beginners and is very unpractical.
0

Commented:
Maybe you mean somehting like this:
this example is using 3 vars called aa,bb,cc (pascal), the lowest number will be in aa,  the highest in cc.

if aa>bb then
begin
temp:=aa;
aa:=bb;
bb:=temp;
end;
if bb>cc then
begin
temp:=bb;
bb:=cc;
cc:=temp;
end;
if aa>bb then
begin
temp:=aa;
aa:=bb;
bb:=temp;
end;

Hope it works! No idea how many compares and xchanges are needed for four vars, or even five!
If you ask me: I'd use an array!!! :)

flobecker

0

Commented:
doing it w/o a array is asking for some serious sore fingers from all the typing you will have to do, plus the fact that you increase the chance of something going wrong.
0

Commented:
GIGO...... Here's your code for 5 numbers with no array, record, pointer or OOP. It will read in five numbers, and print them out in ascending order.

var a,b,c,d,e:byte;
t:byte;
begin
if a>b then begin t:=a;a:=b;b:=t;end;
if b>c then begin t:=b;b:=c;c:=t;end;
if c>d then begin t:=c;c:=d;d:=t;end;
if d>e then begin t:=d;d:=e;e:=t;end;

if a>b then begin t:=a;a:=b;b:=t;end;
if b>c then begin t:=b;b:=c;c:=t;end;
if c>d then begin t:=c;c:=d;d:=t;end;

if a>b then begin t:=a;a:=b;b:=t;end;
if b>c then begin t:=b;b:=c;c:=t;end;

if a>b then begin t:=a;a:=b;b:=t;end;

writeln(a,b,c,d,e);
end.

As you can see, it looks like a Bubblesort implementation. However, I still don't understand why you wouldn't want to use an array... unless it's a stupid homework ;)

0

Commented:
I think that the question was answered; joe_h show the only way.
Or lewis_loo wish magic?
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.