DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Aniruddha has posted 40 posts at DZone. View Full User Profile

# Sort Linked List in Ascending Order - C#

06.04.2012
| 6949 views |
```/// <summary>
/// This method sorts elements in linked list and returns a new sorted linked list
/// </summary>
/// <param name="count">number of elements in unsorted linked list</param>
{
// Basic Algorithm Steps
//1. Find Min Node
//2. Remove Min Node and attach it to new Sorted linked list
//3. Repeat "count" number of times

Node _previous = _current;

Node _min = _current;
Node _minPrevious = _min;

for (int i = 0; i < count; i++)
{
_min = _current;
_minPrevious = _min;

//Find min Node
while (_current != null)
{
if (_current.Data < _min.Data)
{
_min = _current;
_minPrevious = _previous;
}
_previous = _current;
_current = _current.Next;
}

// Remove min Node
{
}
else if (_min.Next == null) //if tail is min node
{
_minPrevious.Next = null;
}
else
{
_minPrevious.Next = _minPrevious.Next.Next;
}

//Attach min Node to the new sorted linked list
{
_sortedListTail.Next = _min;
_sortedListTail = _sortedListTail.Next;
}
else
{
}
}

}```

Sort Linked List in Ascending Order - C#

Efficiency: O(n^2)

Inspired by Selection Sort algorithm

"Starting from scratch" is seductive but disease ridden