Skip to content

Commit a1088fe

Browse files
committed
Merge pull request #118 from kdimolikas/development
Fix bug #89
1 parent 745113a commit a1088fe

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

DataStructures/Lists/DLinkedList.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -731,19 +731,25 @@ public virtual void SelectionSort()
731731
var currentNode = _firstNode;
732732
while (currentNode != null)
733733
{
734+
var minNode = currentNode;
734735
var nextNode = currentNode.Next;
735736
while (nextNode != null)
736737
{
737-
if (nextNode.Data.IsLessThan(currentNode.Data))
738+
if (nextNode.Data.IsLessThan(minNode.Data))
738739
{
739-
var temp = nextNode.Data;
740-
nextNode.Data = currentNode.Data;
741-
currentNode.Data = temp;
740+
minNode = nextNode;
742741
}
743742

744743
nextNode = nextNode.Next;
745744
}
746745

746+
if (minNode != currentNode)
747+
{
748+
var temp = minNode.Data;
749+
minNode.Data = currentNode.Data;
750+
currentNode.Data = temp;
751+
}
752+
747753
currentNode = currentNode.Next;
748754
}
749755
}

UnitTest/DataStructuresTests/DLinkedListTest.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,36 @@ public static void DoTest()
9595
var intArray = listOfNumbers.ToArray();
9696
Assert.True(intArray[0] == 0 && intArray[intArray.Length - 1] == 55, "Wrong sorting!");
9797
}
98+
99+
/// <summary>
100+
///Check SelectionSort method
101+
///</summary>
102+
///<returns></returns>
103+
[Fact]
104+
public static void TestSelectionSort()
105+
{
106+
var listOfNumbers = new DLinkedList<int>();
107+
listOfNumbers.Append(23);
108+
listOfNumbers.Append(42);
109+
listOfNumbers.Append(4);
110+
listOfNumbers.Append(16);
111+
listOfNumbers.Append(8);
112+
listOfNumbers.Append(15);
113+
listOfNumbers.Append(9);
114+
listOfNumbers.Append(55);
115+
listOfNumbers.Append(0);
116+
117+
listOfNumbers.SelectionSort();
118+
var intArray = listOfNumbers.ToArray();
119+
var i = 0;
120+
while (i < intArray.Length - 1)
121+
{
122+
Assert.True(intArray[i] <= intArray[i + 1], "Wrong sorting at index: " + i);
123+
++i;
124+
}
125+
126+
}
127+
98128
}
99129
}
100130

0 commit comments

Comments
 (0)