用ABAP实现的冒泡排序算法

简介: 用ABAP实现的冒泡排序算法

REPORT ztest_bubblesort.

TYPES:BEGIN OF ty_line,

       number TYPE i,

     END OF ty_line.

DATA: lt_array TYPE STANDARD TABLE OF ty_line,

     ls_array TYPE ty_line,

     ls_array_temp type ty_line,

     lv_length TYPE i.

DATA: i TYPE i,

     j TYPE i,

     k TYPE i.

DO 10 TIMES.

 CLEAR ls_array.

 CALL FUNCTION 'QF05_RANDOM_INTEGER'

   EXPORTING

     ran_int_max   = 100

     ran_int_min   = 1

   IMPORTING

     ran_int       = ls_array-number

   EXCEPTIONS

     invalid_input = 1

     OTHERS        = 2.

 IF sy-subrc <> 0.

   WRITE:/ 'Error occured.'.

   EXIT.

 ENDIF.

 APPEND ls_array TO lt_array.

ENDDO.

LOOP AT lt_array INTO ls_array.

   WRITE: ls_array-number.

ENDLOOP.

 lv_length = lines( lt_array ).

 i = 1.

 DO lv_length - 1 TIMES.

   j = lv_length - i.

   k = 1.

   DO j TIMES.

     CLEAR: ls_array, ls_array_temp.

     READ TABLE lt_array INTO ls_array INDEX k.

     READ TABLE lt_array INTO ls_array_temp INDEX k + 1.

     IF ls_array-number > ls_array_temp-number .

       MODIFY lt_array FROM ls_array_temp INDEX k.

       MODIFY lt_array FROM ls_array INDEX k + 1 .

     ENDIF.

     k = k + 1.

   ENDDO.

   i = i + 1.

 ENDDO.

WRITE:/ 'result: '.

LOOP AT lt_array INTO ls_array.

 WRITE: ls_array-number.

ENDLOOP.

class ZCL_MARCH_SORT definition

 public

 final

 create public .

public section.

 types:

   tt_table TYPE TABLE OF int4 .

 methods BUBBLE_SORT

   changing

     !CT_TABLE type TT_TABLE .

 PROTECTED SECTION.

 PRIVATE SECTION.

ENDCLASS.

CLASS ZCL_MARCH_SORT IMPLEMENTATION.

* <SIGNATURE>---------------------------------------------------------------------------------------+

* | Instance Public Method ZCL_MARCH_SORT->BUBBLE_SORT

* +-------------------------------------------------------------------------------------------------+

* | [<-->] CT_TABLE                       TYPE        TT_TABLE

* +--------------------------------------------------------------------------------------</SIGNATURE>

 METHOD bubble_sort.

   DATA(length) = lines( ct_table ).

   DATA(mark) = 1.

   DATA nextnum TYPE int4 .

   DATA currentnum TYPE int4 .

   DATA tempnum TYPE int4.

   DO lines( ct_table ) TIMES .

     WHILE mark < length .

       IF ct_table[ mark ] > ct_table[  mark + 1 ].

         tempnum = ct_table[ mark ] .

         ct_table[ mark ] = ct_table[  mark + 1 ] .

         ct_table[  mark + 1 ] = tempnum .

       ENDIF.

       mark = mark + 1.

     ENDWHILE.

     mark = 1.

     length = length - 1.

   ENDDO.

 ENDMETHOD.

ENDCLASS.

相关文章
|
2月前
|
搜索推荐 Java
经典排序算法---冒泡排序
这篇文章详细介绍了冒泡排序算法的基本思想、比较轮数和次数,并提供了Java语言实现冒泡排序的代码示例,展示了如何通过相邻元素的比较和交换来达到排序的目的。
经典排序算法---冒泡排序
|
3月前
|
算法 PHP
【php经典算法】冒泡排序,冒泡排序原理,冒泡排序执行逻辑,执行过程,执行结果 代码
【php经典算法】冒泡排序,冒泡排序原理,冒泡排序执行逻辑,执行过程,执行结果 代码
25 1
|
4月前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
4月前
|
搜索推荐 算法 大数据
​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
|
4月前
|
机器学习/深度学习 搜索推荐 算法
【C/排序算法】:快速排序和冒泡排序
【C/排序算法】:快速排序和冒泡排序
32 0
|
4月前
|
搜索推荐 算法
排序算法之冒泡排序
排序算法之冒泡排序
24 0
|
4月前
|
搜索推荐
排序算法---冒泡排序----详解&&代码
排序算法---冒泡排序----详解&&代码
|
1天前
|
传感器 算法 C语言
基于无线传感器网络的节点分簇算法matlab仿真
该程序对传感器网络进行分簇,考虑节点能量状态、拓扑位置及孤立节点等因素。相较于LEACH算法,本程序评估网络持续时间、节点死亡趋势及能量消耗。使用MATLAB 2022a版本运行,展示了节点能量管理优化及网络生命周期延长的效果。通过簇头管理和数据融合,实现了能量高效和网络可扩展性。
|
29天前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。
|
29天前
|
算法 数据可视化
基于SSA奇异谱分析算法的时间序列趋势线提取matlab仿真
奇异谱分析(SSA)是一种基于奇异值分解(SVD)和轨迹矩阵的非线性、非参数时间序列分析方法,适用于提取趋势、周期性和噪声成分。本项目使用MATLAB 2022a版本实现从强干扰序列中提取趋势线,并通过可视化展示了原时间序列与提取的趋势分量。代码实现了滑动窗口下的奇异值分解和分组重构,适用于非线性和非平稳时间序列分析。此方法在气候变化、金融市场和生物医学信号处理等领域有广泛应用。
下一篇
无影云桌面