ADA - ordenacion recursiva de coleccion de numeros

 
Vista:

ordenacion recursiva de coleccion de numeros

Publicado por Santiago (1 intervención) el 10/09/2008 23:10:45
Buenos dias,

Estoy empezando con la programacion en ada y queria saber si alguien me puede ayudar la manera de realizar una ordenacion recursiva de una coleccion de numeros.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Ordenación recursiva de una colección de números

Publicado por Alejandro (155 intervenciones) el 30/06/2023 22:23:25
Para realizar una ordenación recursiva de una colección de números en Ada, puedes implementar el algoritmo de ordenación recursiva conocido como "QuickSort". Aquí tienes una posible solución:

1. Define el procedimiento recursivo QuickSort:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
procedure QuickSort (Arr : in out Num_Array; Low : Positive; High : Positive) is
   Pivot : Num;
   Left, Right : Positive;
begin
   if Low < High then
      Pivot := Arr(High);
      Left := Low;
      Right := High - 1;
 
      while Left <= Right loop
         while Left <= Right and then Arr(Left) < Pivot loop
            Left := Left + 1;
         end loop;
 
         while Right >= Left and then Arr(Right) >= Pivot loop
            Right := Right - 1;
         end loop;
 
         if Left < Right then
            Swap(Arr(Left), Arr(Right));
         end if;
      end loop;
 
      Swap(Arr(Left), Arr(High));
 
      QuickSort(Arr, Low, Left - 1);
      QuickSort(Arr, Left + 1, High);
   end if;
end QuickSort;

2. Define el procedimiento auxiliar Swap para intercambiar elementos de la colección:
1
2
3
4
5
6
procedure Swap (A, B : in out Num) is
   Temp : Num := A;
begin
   A := B;
   B := Temp;
end Swap;

3. Llama al procedimiento QuickSort pasando la colección que deseas ordenar, el índice bajo (Low) y el índice alto (High):
1
2
3
4
5
6
7
8
9
10
11
12
13
declare
   -- Definir el tipo Num_Array y la colección de números a ordenar
   type Num_Array is array(Positive range <>) of Num;
   Arr : Num_Array := (10, 5, 8, 2, 1, 7, 3);
 
begin
   -- Llamar a QuickSort para ordenar la colección completa
   QuickSort(Arr, Arr'First, Arr'Last);
 
   -- Realizar acciones con la colección ordenada
   -- ...
 
end;

Asegúrate de reemplazar "Num_Array" por el tipo de colección que estés utilizando y "Num" por el tipo de dato numérico correspondiente.

Esta solución utiliza el enfoque de QuickSort para ordenar la colección recursivamente dividiéndola en subcolecciones más pequeñas y utilizando un pivote para comparar y reorganizar los elementos.

Recuerda adaptar el código según tus necesidades específicas y el tipo de colección que estés utilizando. ¡Buena suerte con tu aprendizaje en programación Ada!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar