-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
Linked_List_Selection_Sort.c
91 lines (80 loc) · 1.35 KB
/
Linked_List_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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int value;
struct node *next;
} node;
node *start, *temp;
void insert(int val) // Function to insert value into linked list
{
node *newNode;
newNode = (node *)malloc(sizeof(node));
newNode -> value = val;
newNode -> next = NULL;
if (start == NULL)
{
start = newNode;
}
else
{
temp = start;
while (temp -> next)
{
temp = temp -> next;
}
temp -> next = newNode;
}
}
void display() // Function to display current linked list
{
temp = start;
while (temp)
{
printf("%d\t", temp -> value );
temp = temp -> next;
}
printf("\n");
}
void selectionSort()//Function that operates selection sort on linked lists
{
node *beg = start, *current;
node *minimum = start;
int t;
while (beg -> next != NULL)
{
minimum = beg;
current = beg -> next;
while (current)
{
if (current -> value < minimum -> value)
{
minimum = current;
}
current = current -> next;
}
t = beg -> value;
beg -> value = minimum -> value;
minimum -> value = t;
beg = beg -> next;
}
}
int main()
{
insert(4);
insert(6);
insert(19);
insert(2);
insert(10);
insert(3);
printf("Before sorting : ");
display();
selectionSort();
printf("After Sorting : ");
display();
return 0;
}
/* Output
Before sorting : 4 6 19 2 10 3
After Sorting : 2 3 4 6 10 19
*/