Clasificación de burbujas en ABAP

Prefacio – Esta publicación es parte del Programas ABAP .

Bubble Sort en ABAP es un tema importante en términos de preguntas de entrevista. En general, ABAP proporciona la palabra clave "SORT" para fines de clasificación y se usa ampliamente en todas partes. En este artículo, aprenderemos: ¿Qué es una clasificación de burbujas y cómo implementarla en nuestros programas ABAP?

¿Qué es una clasificación de burbujas?

Una clasificación de burbujas es una forma de clasificar una matriz dada de números. El mecanismo de clasificación implica un procedimiento en el que cada valor de la matriz (en el caso de ABAP, Mesa Interna) se compara con el valor adyacente y se intercambia en caso de que el valor superior sea mayor que el valor inferior, como se muestra en la imagen aquí:

ordenamiento de burbuja

El programa para realizar Bubble sort en ABAP se muestra a continuación:

DATOS: ITAB_data TYPE TABLE OF int4, "Tabla interna para aceptar datos múltiples ITAB TYPE TABLE OF string, wa_current_data type int4, "Área de trabajo para esta tabla interna wa_bubble_data TYPE int4, lv_lines TYPE int1, lv_data1 TYPE int2, lv_data2 TYPE int2, lv_current_line TYPE int1. PANTALLA DE SELECCIÓN INICIO DE PANTALLA 0100 . "Donde creamos una Pantalla 0100 SELECT-OPTIONS: s_data FOR wa_current_data. "Select-Option for multiple Input SELECTION-SCREN END OF SCREEN 0100. DATA: wa_sdata LIKE LINE OF s_data. INICIO DE SELECCIÓN. " Donde mostramos la salida CALL SELECTION-SCREEN '0100' COMENZANDO EN 10 10. "Donde llamamos a la pantalla 0100 que creamos anteriormente. BUCLE EN s_data EN wa_sdata. ANEXE wa_sdata-low A ITAB_data. ENDLOOP. DESCRIBE TABLE ITAB_data LINES lv_lines." Aquí obtenemos el número total de registros WHILE sy-index < lv_lines. " Recorre todo el registro hasta que todos los datos se comparen. wa_current_data DESDE 1 HASTA lv_lines - sy-index + 1. " Leer datos desde el segundo registro en adelante lv_current_line = sy-tabix. " Da el número de bucle actual SI ( wa_bubble_data > wa_current_data ). " Si el registro n.º 2 > el registro n.º 1 => CAMBIARlos MODIFICAR ITAB_data DESDE wa_bubble_data ÍNDICE lv_current_line. MODIFICAR ITAB_data DESDE wa_current_data ÍNDICE lv_current_line - 2. DE LO CONTRARIO. wa_bubble_data = wa_datos_actuales. " De lo contrario, el segundo registro se convertirá en el primero y el tercer registro se convertirá en el segundo registro ENDIF. ENDLOOP. ENDWHILE. LOOP AT ITAB_data INTO wa_current_data. SKIP. WRITE : wa_current_data. ENDLOOP.

Explicación:

En el programa anterior, inicialmente hemos definido tipos de datos: dos tablas internas [una para almacenar original y otra ordenada], dos áreas de trabajo [para ser utilizadas por estas tablas internas], dos variables [para ser utilizadas para el intercambio], una variable [para guardar la línea/índice actual].

A continuación, hemos creado una pantalla de selección para recibir entradas y guardarlas en una tabla interna. Luego, usando DESCRIBE, obtendremos el número total de registros en esa tabla interna. Luego usamos dos bucles [uno dentro de otro] y comparamos todos los datos y seguimos intercambiándolos en consecuencia. Y por último imprime los registros como salida que se ordena.

Autor


Comentarios

2 respuestas a "Clasificación de burbujas en ABAP"

  1. Hola, gracias por compartir tu solución.

    No entiendo el punto de la línea 23. ¿Por qué es cada vez que continúa en el índice 1?

    Thx por adelantado.

    saludos cordiales

  2. Avatar de gelatina
    Gelatina

    Programa maravilloso!

Deje un comentario

Su dirección de correo electrónico no será publicada. Las areas obligatorias están marcadas como requeridas *

Este sitio usa Akismet para reducir el correo no deseado. Descubra cómo se procesan los datos de sus comentarios.