-
Notifications
You must be signed in to change notification settings - Fork 0
/
2-selection_sort.c
38 lines (35 loc) · 1005 Bytes
/
2-selection_sort.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "sort.h"
/**
* selection_sort - sort integer values using selection the sort algorithm
* Starts with the leftmost value as x, compares with the rest of the values.
* Update x if a less value is found from left to right.
* Then swap the positions of x and the current index.
* Repeat as index moves from left to right.
*
* @nums: an array of integers
* @len: the length of the array
*
* Return: void
*/
void selection_sort(int *nums, size_t len)
{
int temp;
unsigned int i, rightmost, leftmost;
if (nums == NULL || len < 2)
return;
for (i = 0; i < len; i++)
{
leftmost = i; /* save the leftmost position */
for (rightmost = i; rightmost < len; rightmost++)
if (nums[rightmost] < nums[leftmost])
leftmost = rightmost;
/* leftmost now probably holds the position of a less value*/
if (leftmost != i)
{ /* swap the values using a temporary variable */
temp = nums[leftmost];
nums[leftmost] = nums[i];
nums[i] = temp;
print_array(nums, len);
}
}
}