@@ -26,31 +26,31 @@ void quick_sort(int *array, size_t size)
26
26
void quick_sort_lomuto (int * array , size_t size , ssize_t left , ssize_t right )
27
27
{
28
28
int swap ;
29
- ssize_t left_clone = left - 1 ;
30
- quick_sort_struct utils ;
29
+ quick_sort_struct sort = { NULL , 0 , 0 , 0 , 0 , 0 , 0 } ;
30
+ quick_sort_struct * utils = & sort ;
31
31
32
- utils . array = array ;
33
- utils . curr_int_idx = left ;
34
- utils . left = left ;
35
- utils . right = right ;
36
- utils . pivot_idx = & left_clone ;
37
- utils . size = size ;
38
- utils . pivot = array [right ];
32
+ utils -> array = array ;
33
+ utils -> curr_int_idx = left ;
34
+ utils -> left = left ;
35
+ utils -> right = right ;
36
+ utils -> pivot_idx = left - 1 ;
37
+ utils -> size = size ;
38
+ utils -> pivot = array [right ];
39
39
40
- if (left < right )
40
+ if (utils -> left < utils -> right )
41
41
{
42
- find_and_move_lesser_numbers (& utils );
42
+ find_and_move_lesser_numbers (utils );
43
43
44
- if (* utils . pivot_idx + 1 != right )
44
+ if (utils -> pivot_idx + 1 != utils -> right )
45
45
{
46
- swap = array [* utils . pivot_idx + 1 ];
47
- array [* utils . pivot_idx + 1 ] = array [right ];
48
- array [right ] = swap ;
49
- print_array (array , size );
46
+ swap = utils -> array [utils -> pivot_idx + 1 ];
47
+ utils -> array [utils -> pivot_idx + 1 ] = utils -> array [right ];
48
+ utils -> array [right ] = swap ;
49
+ print_array (utils -> array , utils -> size );
50
50
}
51
51
52
- quick_sort_lomuto (array , size , left , * utils . pivot_idx );
53
- quick_sort_lomuto (array , size , * utils . pivot_idx + 2 , right );
52
+ quick_sort_lomuto (array , utils -> size , utils -> left , utils -> pivot_idx );
53
+ quick_sort_lomuto (array , utils -> size , utils -> pivot_idx + 2 , utils -> right );
54
54
}
55
55
}
56
56
@@ -62,33 +62,30 @@ void quick_sort_lomuto(int *array, size_t size, ssize_t left, ssize_t right)
62
62
*/
63
63
void find_and_move_lesser_numbers (quick_sort_struct * utils )
64
64
{
65
- ssize_t i = utils -> curr_int_idx ;
66
-
67
- while (i < utils -> right )
65
+ while (utils -> curr_int_idx < utils -> right )
68
66
{
69
- if (utils -> array [i ] <= utils -> pivot )
67
+ if (utils -> array [utils -> curr_int_idx ] <= utils -> pivot )
70
68
{
71
- ( * utils -> pivot_idx ) ++ ;
72
- swap_numbers (utils , i );
69
+ utils -> pivot_idx ++ ;
70
+ swap_numbers (utils );
73
71
}
74
- i ++ ;
72
+ utils -> curr_int_idx ++ ;
75
73
}
76
74
}
77
75
78
76
/**
79
77
* swap_numbers - Swaps two numbers in the array of integers
80
78
* @utils: Address of struct containing necessery data to be used for swapping
81
- * @i: Current index of the number to be swapped in the array
82
79
*/
83
- void swap_numbers (quick_sort_struct * utils , ssize_t i )
80
+ void swap_numbers (quick_sort_struct * utils )
84
81
{
85
82
int swap ;
86
83
87
- if (i != * utils -> pivot_idx )
84
+ if (utils -> curr_int_idx != utils -> pivot_idx )
88
85
{
89
- swap = utils -> array [* utils -> pivot_idx ];
90
- utils -> array [* utils -> pivot_idx ] = utils -> array [i ];
91
- utils -> array [i ] = swap ;
86
+ swap = utils -> array [utils -> pivot_idx ];
87
+ utils -> array [utils -> pivot_idx ] = utils -> array [utils -> curr_int_idx ];
88
+ utils -> array [utils -> curr_int_idx ] = swap ;
92
89
print_array (utils -> array , utils -> size );
93
90
}
94
91
}
0 commit comments