From 56dea7dcd6715b51399d0a5c0cf00ba72bddb9fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=B6gele?= Date: Thu, 22 May 2014 11:46:41 +0200 Subject: [PATCH] Quicksort von Manuel --- inf3.csproj | 1 + src/Quicksort.cs | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 src/Quicksort.cs diff --git a/inf3.csproj b/inf3.csproj index a2bda9d..4566a5c 100644 --- a/inf3.csproj +++ b/inf3.csproj @@ -102,6 +102,7 @@ + diff --git a/src/Quicksort.cs b/src/Quicksort.cs new file mode 100644 index 0000000..9ebdb59 --- /dev/null +++ b/src/Quicksort.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; + +namespace WorldOfPeacecraft +{ + public class Quicksort + { + public static void sort (IList list, Func isSmaller) + { + if (list.Count != 0) { + sort (list, 0, list.Count - 1, isSmaller); + } + } + + private static void sort (IList list, int startIndex, int endIndex, Func isSmaller) + { + T tmp; + if (endIndex - startIndex <= 0) { + return; + } + int pivot = endIndex; + int rechts = endIndex - 1; + int links = startIndex; + while (links < rechts) { + while (isSmaller(list[links], list[pivot]) && links < rechts) { + links++; + } + while (isSmaller(list[pivot], list[rechts]) && rechts > links) { + rechts--; + } + if (isSmaller (list [rechts], list [links]) && links < rechts) { + tmp = list [links]; + list [links] = list [rechts]; + list [rechts] = tmp; + links++; + } + } + if (isSmaller (list [links], list [pivot])) { + links++; + } + tmp = list[links]; + list[links] = list[pivot]; + list[pivot] = tmp; + pivot = links; + sort (list, startIndex, pivot - 1, isSmaller); + sort (list, pivot + 1, endIndex, isSmaller); + } + } +} \ No newline at end of file