Skip to content

Commit 1367025

Browse files
committed
style(quick sort): use pointer to struct utils through out file
1 parent 09a9281 commit 1367025

File tree

2 files changed

+35
-33
lines changed

2 files changed

+35
-33
lines changed

3-quick_sort.c

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -26,31 +26,31 @@ void quick_sort(int *array, size_t size)
2626
void quick_sort_lomuto(int *array, size_t size, ssize_t left, ssize_t right)
2727
{
2828
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;
3131

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];
3939

40-
if (left < right)
40+
if (utils->left < utils->right)
4141
{
42-
find_and_move_lesser_numbers(&utils);
42+
find_and_move_lesser_numbers(utils);
4343

44-
if (*utils.pivot_idx + 1 != right)
44+
if (utils->pivot_idx + 1 != utils->right)
4545
{
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);
5050
}
5151

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);
5454
}
5555
}
5656

@@ -62,33 +62,30 @@ void quick_sort_lomuto(int *array, size_t size, ssize_t left, ssize_t right)
6262
*/
6363
void find_and_move_lesser_numbers(quick_sort_struct *utils)
6464
{
65-
ssize_t i = utils->curr_int_idx;
66-
67-
while (i < utils->right)
65+
while (utils->curr_int_idx < utils->right)
6866
{
69-
if (utils->array[i] <= utils->pivot)
67+
if (utils->array[utils->curr_int_idx] <= utils->pivot)
7068
{
71-
(*utils->pivot_idx)++;
72-
swap_numbers(utils, i);
69+
utils->pivot_idx++;
70+
swap_numbers(utils);
7371
}
74-
i++;
72+
utils->curr_int_idx++;
7573
}
7674
}
7775

7876
/**
7977
* swap_numbers - Swaps two numbers in the array of integers
8078
* @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
8279
*/
83-
void swap_numbers(quick_sort_struct *utils, ssize_t i)
80+
void swap_numbers(quick_sort_struct *utils)
8481
{
8582
int swap;
8683

87-
if (i != *utils->pivot_idx)
84+
if (utils->curr_int_idx != utils->pivot_idx)
8885
{
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;
9289
print_array(utils->array, utils->size);
9390
}
9491
}

sort.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ typedef struct quick_sort_util
4242
ssize_t curr_int_idx;
4343
ssize_t left;
4444
ssize_t right;
45-
ssize_t *pivot_idx;
45+
ssize_t pivot_idx;
4646
size_t size;
4747
int pivot;
4848
} quick_sort_struct;
@@ -72,14 +72,19 @@ typedef struct shell_sort
7272

7373
void print_array(const int *array, size_t size);
7474
void print_list(const listint_t *list);
75+
7576
void bubble_sort(int *array, size_t size);
77+
7678
void insertion_sort_list(listint_t **list);
7779
void insertion_sort(listint_t **list, listint_t *current, listint_t *cur_prev);
80+
7881
void selection_sort(int *array, size_t size);
82+
7983
void quick_sort(int *array, size_t size);
8084
void quick_sort_lomuto(int *array, size_t size, ssize_t left, ssize_t right);
8185
void find_and_move_lesser_numbers(quick_sort_struct *utils);
82-
void swap_numbers(quick_sort_struct *utils, ssize_t i);
86+
void swap_numbers(quick_sort_struct *utils);
87+
8388
void shell_sort(int *array, size_t size);
8489
void compare_and_swap(shell_sort_struct *utils);
8590
int is_sorted(shell_sort_struct *utils);

0 commit comments

Comments
 (0)