From 0828ee25fa579f1a2cea20664c544441def14542 Mon Sep 17 00:00:00 2001 From: Daniel Herrmann Date: Thu, 22 May 2014 11:58:16 +0200 Subject: [PATCH] neuer QuickSortDaniel --- src/QuickSortDaniel.cs | 67 +++++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 30 deletions(-) diff --git a/src/QuickSortDaniel.cs b/src/QuickSortDaniel.cs index 17b810a..7c34995 100644 --- a/src/QuickSortDaniel.cs +++ b/src/QuickSortDaniel.cs @@ -11,44 +11,51 @@ namespace WorldOfPeacecraft public QuickSortDaniel(IList SortFiles) { this.SortFiles = SortFiles; - doSort(); + doSort(0, SortFiles.Count-1); } - private void doSort() + private void doSort(int start, int end) { - int size = SortFiles.Count; - T pivot; - T comparer; - int pivotpos = 0; - int comppos = size - 1; - - pivot = SortFiles[pivotpos]; - comparer = SortFiles[comppos]; - - while (pivotpos != comppos) + if (start != end) { - do - { - if (comppos > pivotpos) - { - comppos = comppos - 1; - comparer = SortFiles[comppos]; - } - else - { - comppos = comppos + 1; - comparer = SortFiles[comppos]; - } - } while (pivot < comparer); - int tmp = comppos; - SortFiles[comppos] = pivot; - SortFiles[pivotpos] = comparer; - pivotpos = comppos; - comppos = tmp; + int size = SortFiles.Count; + T pivot; + T comparer; + int pivotpos = start; + int comppos = end; + + pivot = SortFiles[pivotpos]; + comparer = SortFiles[comppos]; + + while (pivotpos != comppos) + { + do + { + if (comppos > pivotpos) + { + comppos = comppos - 1; + comparer = SortFiles[comppos]; + } + else + { + comppos = comppos + 1; + comparer = SortFiles[comppos]; + } + } while (pivot < comparer); + + int tmp = comppos; + SortFiles[comppos] = pivot; + SortFiles[pivotpos] = comparer; + pivotpos = comppos; + comppos = tmp; + } + doSort(start, pivotpos-1); + doSort(pivotpos+1, end); } } + private IList getSortedList() { return SortFiles;