diff --git a/Tests/Tests.csproj b/Tests/Tests.csproj
index e551d4db..34cb23ec 100644
--- a/Tests/Tests.csproj
+++ b/Tests/Tests.csproj
@@ -48,7 +48,6 @@
..\linearsearch\bin\Debug\linearsearch.dll
-
..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll
@@ -63,6 +62,7 @@
+
@@ -102,6 +102,10 @@
{92DB864E-DF8A-470C-9746-69B7C41AB80C}
fibonaccisearch
+
+ {1593D8D2-1C16-4204-BCF3-FB79E1CE5ABC}
+ gnomesort
+
{9199c1cc-0966-40c9-8acc-7ab1baf6512a}
quicksort
@@ -123,9 +127,6 @@
heapsort
-
-
-
diff --git a/Tests/sort/GnomeSortTest.cs b/Tests/sort/GnomeSortTest.cs
new file mode 100644
index 00000000..41e887b6
--- /dev/null
+++ b/Tests/sort/GnomeSortTest.cs
@@ -0,0 +1,54 @@
+using System.Collections.Generic;
+using System.Linq;
+using csharp_algorithms;
+using gnomesort;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace Tests.sort
+{
+ [TestClass]
+ public class GnomeSortTest
+ {
+ [TestMethod]
+ public void NormalSort()
+ {
+ // Arrange
+ var list = new List
+ {
+ new Node(5),
+ new Node(1)
+ };
+ var b = new GnomeSort(list);
+
+ // Act
+ List result = b.Sort().ToList();
+
+ // Assert
+ Assert.AreEqual(1, result.ElementAt(0).Number);
+ Assert.AreEqual(5, result.ElementAt(1).Number);
+ }
+
+ [TestMethod]
+ public void LongerSort()
+ {
+ // Arrange
+ var list = new List
+ {
+ new Node(3),
+ new Node(5),
+ new Node(1),
+ new Node(8)
+ };
+ var b = new GnomeSort(list);
+
+ // Act
+ var result = b.Sort().ToList();
+
+ // Assert
+ Assert.AreEqual(1, result.ElementAt(0).Number);
+ Assert.AreEqual(3, result.ElementAt(1).Number);
+ Assert.AreEqual(5, result.ElementAt(2).Number);
+ Assert.AreEqual(8, result.ElementAt(3).Number);
+ }
+ }
+}
\ No newline at end of file
diff --git a/csharp-algorithms.sln b/csharp-algorithms.sln
index 34e32858..711b401f 100644
--- a/csharp-algorithms.sln
+++ b/csharp-algorithms.sln
@@ -33,6 +33,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "knapsackproblem", "knapsack
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "bellmanFordAlgorithm", "bellmanFordAlgorithm\bellmanFordAlgorithm.csproj", "{6B79C9EC-0219-44AD-B399-CD4046718E66}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "gnomesort", "gnomesort\gnomesort.csproj", "{1593D8D2-1C16-4204-BCF3-FB79E1CE5ABC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -87,6 +89,10 @@ Global
{6B79C9EC-0219-44AD-B399-CD4046718E66}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6B79C9EC-0219-44AD-B399-CD4046718E66}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6B79C9EC-0219-44AD-B399-CD4046718E66}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1593D8D2-1C16-4204-BCF3-FB79E1CE5ABC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1593D8D2-1C16-4204-BCF3-FB79E1CE5ABC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1593D8D2-1C16-4204-BCF3-FB79E1CE5ABC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1593D8D2-1C16-4204-BCF3-FB79E1CE5ABC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -102,6 +108,7 @@ Global
{8087DFD2-673A-499F-B130-0FAE0F31EADC} = {05BBB622-53C5-4866-869B-B45978502CB5}
{8870FC35-4386-43E5-B5EA-1C764E7ADC54} = {05BBB622-53C5-4866-869B-B45978502CB5}
{6B79C9EC-0219-44AD-B399-CD4046718E66} = {05BBB622-53C5-4866-869B-B45978502CB5}
+ {1593D8D2-1C16-4204-BCF3-FB79E1CE5ABC} = {6A9C8607-AA57-4817-B2C8-B8DD5065AC7C}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {7F2BFC66-A9D6-4C6D-A15A-984F23C11D29}
diff --git a/gnomesort/GnomeSort.cs b/gnomesort/GnomeSort.cs
new file mode 100644
index 00000000..6cad8cd0
--- /dev/null
+++ b/gnomesort/GnomeSort.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using csharp_algorithms;
+
+namespace gnomesort
+{
+ public class GnomeSort
+ {
+ private readonly IEnumerable _list;
+
+ public GnomeSort(IEnumerable list)
+ {
+ _list = list;
+ }
+
+ private void Swap(Node left, Node right)
+ {
+ int originalLeft = left.Number;
+ left.Number = right.Number;
+ right.Number = originalLeft;
+ }
+
+ public IEnumerable Sort()
+ {
+ var i = 0;
+ while (i < _list.Count())
+ if (i == 0 || _list.ElementAt(i).Number > _list.ElementAt(i - 1).Number)
+ {
+ i++;
+ }
+ else
+ {
+ Swap(_list.ElementAt(i), _list.ElementAt(i - 1));
+ i--;
+ }
+
+ return _list;
+ }
+ }
+}
diff --git a/gnomesort/Properties/AssemblyInfo.cs b/gnomesort/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..5b7ab09d
--- /dev/null
+++ b/gnomesort/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Allgemeine Informationen über eine Assembly werden über die folgenden
+// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
+// die einer Assembly zugeordnet sind.
+[assembly: AssemblyTitle("gnomesort")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("gnomesort")]
+[assembly: AssemblyCopyright("Copyright © 2018")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
+// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
+// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
+[assembly: ComVisible(false)]
+
+// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
+[assembly: Guid("1593d8d2-1c16-4204-bcf3-fb79e1ce5abc")]
+
+// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
+//
+// Hauptversion
+// Nebenversion
+// Buildnummer
+// Revision
+//
+// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
+// indem Sie "*" wie unten gezeigt eingeben:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/gnomesort/gnomesort.csproj b/gnomesort/gnomesort.csproj
new file mode 100644
index 00000000..58d913c7
--- /dev/null
+++ b/gnomesort/gnomesort.csproj
@@ -0,0 +1,54 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {1593D8D2-1C16-4204-BCF3-FB79E1CE5ABC}
+ Library
+ Properties
+ gnomesort
+ gnomesort
+ v4.6.1
+ 512
+ true
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {3511528e-8696-40b8-85ab-97456347a497}
+ csharp-algorithms
+
+
+
+
\ No newline at end of file