|
4 | 4 | *& |
5 | 5 | *&---------------------------------------------------------------------* |
6 | 6 | REPORT z_lc_sorted_square_array_ascen. |
| 7 | +*⏱️ Time Complexity: O(n) |
| 8 | +*- The array lt_values has n elements. |
| 9 | +*- The main DO lv_len TIMES loop runs n times, and in each iteration, you're doing constant-time operations: comparison, squaring, appending → O(n) |
| 10 | +*- The reverse step (WHILE index > 0) also runs once over n elements → another O(n) |
| 11 | +*- Final LOOP AT lt_result for printing → O(n) |
| 12 | +*✅ Total Time Complexity = O(n) + O(n) + O(n) = O(n) |
| 13 | +* |
| 14 | +*🧠 Space Complexity: O(n) |
| 15 | +*- lt_final stores n squared values in descending order |
| 16 | +*- lt_result stores the reversed version, again n values |
| 17 | +*- Both are linear in size relative to input → O(n) |
| 18 | +*There’s no extra recursion or nested loops, so your program maintains good space efficiency as well |
7 | 19 |
|
8 | | -*TYPES: lty_i TYPE STANDARD TABLE OF i WITH EMPTY KEY . |
9 | | -*DATA: lt_final TYPE lty_i. |
10 | | -* |
11 | | -*DATA(lt_values) = VALUE lty_i( ( -6 ) ( -4 ) ( 0 ) ( 1 ) ( 2 ) ( 5 ) ( 7 ) ) . |
12 | | -* |
13 | | -*DATA(lv_len) = lines( lt_values ). |
14 | | -* |
15 | | -*DATA(i) = 1. |
16 | | -*DATA(j) = lv_len. |
17 | | -* |
18 | | -*DO lv_len TIMES. |
19 | | -* |
20 | | -* DATA(k) = sy-index. |
21 | | -* |
22 | | -* IF abs( lt_values[ i ] ) >= lt_values[ j ]. |
23 | | -* |
24 | | -* APPEND lt_values[ i ] TO lt_final. |
25 | | -* i = i + 1. |
26 | | -* ELSE. |
27 | | -* APPEND lt_values[ j ] TO lt_final. |
28 | | -* |
29 | | -* j = j - 1. |
30 | | -* |
31 | | -* ENDIF. |
32 | | -* |
33 | | -* lt_final[ k ] = lt_final[ k ] * lt_final[ k ]. |
34 | | -* |
35 | | -* WRITE: / lt_final[ k ] . |
36 | | -* |
37 | | -*ENDDO. |
| 20 | +TYPES: lty_i TYPE STANDARD TABLE OF i WITH EMPTY KEY . |
| 21 | +DATA: lt_final TYPE lty_i, |
| 22 | + lt_result TYPE lty_i. |
| 23 | + |
| 24 | +DATA(lt_values) = VALUE lty_i( ( -6 ) ( -4 ) ( 0 ) ( 1 ) ( 2 ) ( 5 ) ( 7 ) ). |
| 25 | + |
| 26 | +DATA(lv_len) = lines( lt_values ). |
| 27 | +DATA(i) = 1. |
| 28 | +DATA(j) = lv_len. |
| 29 | + |
| 30 | +DO lv_len TIMES. |
| 31 | + DATA(lv_square) = 0. |
| 32 | + IF abs( lt_values[ i ] ) > abs( lt_values[ j ] ). |
| 33 | + lv_square = lt_values[ i ] * lt_values[ i ]. |
| 34 | + i = i + 1. |
| 35 | + ELSE. |
| 36 | + lv_square = lt_values[ j ] * lt_values[ j ]. |
| 37 | + j = j - 1. |
| 38 | + ENDIF. |
| 39 | + APPEND lv_square TO lt_final. |
| 40 | +ENDDO. |
| 41 | + |
| 42 | +" Now reverse the result to get ascending order |
| 43 | +DATA(index) = lines( lt_final ). |
| 44 | +WHILE index > 0. |
| 45 | + APPEND lt_final[ index ] TO lt_result. |
| 46 | + index = index - 1. |
| 47 | +ENDWHILE. |
| 48 | + |
| 49 | +LOOP AT lt_result INTO DATA(val). |
| 50 | + WRITE: / val. |
| 51 | +ENDLOOP. |
0 commit comments