From 908ff449c7880853ecafdcea3f9efebc71161b2a Mon Sep 17 00:00:00 2001 From: Paul Galvin Date: Wed, 2 Aug 2017 06:25:45 -0400 Subject: [PATCH 1/7] Created a first cut at quick sort using TS generics. Includes image of results. --- algorithms/quickSort_generic.md | 110 ++++++++++++++++++++++++++++ images/generic_quicksort_output.JPG | Bin 0 -> 108124 bytes 2 files changed, 110 insertions(+) create mode 100644 algorithms/quickSort_generic.md create mode 100644 images/generic_quicksort_output.JPG diff --git a/algorithms/quickSort_generic.md b/algorithms/quickSort_generic.md new file mode 100644 index 0000000..5015d0a --- /dev/null +++ b/algorithms/quickSort_generic.md @@ -0,0 +1,110 @@ +## Exercise + +Implement QuickSort Using TypeScript Generics + +## Solution + +```ts + +type SortPredicate = (item: Sortable) => boolean; + +interface Sortable { + equals: SortPredicate; + lessThan: SortPredicate; + greaterThan: SortPredicate; +} + +function genericPartition( + sourceArray: T[], + leftIndex: number = 0, + rightIndex: number = sourceArray.length - 1) { + + const pivotItem: T = sourceArray[Math.floor((rightIndex + leftIndex) / 2)]; + + let i = leftIndex; + let j = rightIndex; + + while (i <= j) { + + while (sourceArray[i].lessThan(pivotItem)) { + i++; + } + + while (sourceArray[j].greaterThan(pivotItem)) { + j--; + } + + if (i <= j) { + [sourceArray[i], sourceArray[j]] = [sourceArray[j], sourceArray[i]]; + i++; + j--; + } + } + + return i; +} + + +function genericQuickSort( + array: T[], + left: number = 0, + right: number = array.length - 1) { + + let index: number; + + if (array.length > 1) { + index = genericPartition(array, left, right); + + if (left < index - 1) { + genericQuickSort(array, left, index - 1); + } + + if (index < right) { + genericQuickSort(array, index, right); + } + } + + return array; +} + +class Cat implements Sortable { + + public Name: string; + public Age: number; + + constructor(catName: string, catAge: number) { + this.Name = catName; + this.Age = catAge; + } + + public equals(testCat: Cat) { + return testCat.Name === this.Name; + } + public lessThan(testCat: Cat) { + return testCat.Name > this.Name; + } + public greaterThan(testCat: Cat) { + return testCat.Name < this.Name; + } +} + +const unsortedArray = [ + new Cat("Marvin", 4), + new Cat("Arial", 3), + new Cat("Felix", 3), + new Cat("Tommy Boy", 9), + new Cat("Athena", 1) +]; + +const sortedArray = [...unsortedArray]; + +genericQuickSort(sortedArray); + +console.log({unsorted: unsortedArray, sorted: sortedArray}); + +``` + +Result: + +![Output from sorting the Cat collection](../images/generic_quicksort_output.jpg) + diff --git a/images/generic_quicksort_output.JPG b/images/generic_quicksort_output.JPG new file mode 100644 index 0000000000000000000000000000000000000000..6dbb293bfada8edb12348e480012dd15731cb3a8 GIT binary patch literal 108124 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%0DCt*QfQj$ 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⁡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 literal 0 HcmV?d00001 From 936fa93aea1be7daf3d15a8bc012f5316e37dbeb Mon Sep 17 00:00:00 2001 From: Paul Galvin Date: Wed, 2 Aug 2017 06:32:46 -0400 Subject: [PATCH 2/7] Updated README.md to link to generic quick sort. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fb5d4dc..0635ffc 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ - Selection Sort - Merge Sort - Count Sort -- Quick Sort +- Quick Sort and Quick Sort using TypeScript Generics - Radix Sort - BFS - DFS - Tree Traversals: In-Order, Pre-Order, Post-Order From bd2a5ff57ee38286d33ce04c5aa224de8caa2b5b Mon Sep 17 00:00:00 2001 From: Paul Galvin Date: Wed, 2 Aug 2017 06:40:03 -0400 Subject: [PATCH 3/7] Working on image link. --- algorithms/quickSort_generic.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/algorithms/quickSort_generic.md b/algorithms/quickSort_generic.md index 5015d0a..dccdfed 100644 --- a/algorithms/quickSort_generic.md +++ b/algorithms/quickSort_generic.md @@ -106,5 +106,5 @@ console.log({unsorted: unsortedArray, sorted: sortedArray}); Result: -![Output from sorting the Cat collection](../images/generic_quicksort_output.jpg) +![Output from sorting the Cat collection](images/generic_quicksort_output.jpg) From 4aa4d7ee93fc734e571734ffea634eff61de6a8c Mon Sep 17 00:00:00 2001 From: Paul Galvin Date: Wed, 2 Aug 2017 06:42:26 -0400 Subject: [PATCH 4/7] Working on image URL. --- algorithms/quickSort_generic.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/algorithms/quickSort_generic.md b/algorithms/quickSort_generic.md index dccdfed..db0c2ef 100644 --- a/algorithms/quickSort_generic.md +++ b/algorithms/quickSort_generic.md @@ -106,5 +106,5 @@ console.log({unsorted: unsortedArray, sorted: sortedArray}); Result: -![Output from sorting the Cat collection](images/generic_quicksort_output.jpg) +![Output from sorting the Cat collection](../../images/generic_quicksort_output.jpg) From 81d41da4c3f6016666c11111e87ef62abb084dd3 Mon Sep 17 00:00:00 2001 From: Paul Galvin Date: Wed, 2 Aug 2017 06:45:00 -0400 Subject: [PATCH 5/7] Another try at the URL. --- algorithms/quickSort_generic.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/algorithms/quickSort_generic.md b/algorithms/quickSort_generic.md index db0c2ef..5015d0a 100644 --- a/algorithms/quickSort_generic.md +++ b/algorithms/quickSort_generic.md @@ -106,5 +106,5 @@ console.log({unsorted: unsortedArray, sorted: sortedArray}); Result: -![Output from sorting the Cat collection](../../images/generic_quicksort_output.jpg) +![Output from sorting the Cat collection](../images/generic_quicksort_output.jpg) From 0eea808728511c7f5f80a68598a2ae5785a034f1 Mon Sep 17 00:00:00 2001 From: Paul Galvin Date: Wed, 2 Aug 2017 08:26:53 -0400 Subject: [PATCH 6/7] Still fiddling with the image url. --- algorithms/quickSort_generic.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/algorithms/quickSort_generic.md b/algorithms/quickSort_generic.md index 5015d0a..05bccb0 100644 --- a/algorithms/quickSort_generic.md +++ b/algorithms/quickSort_generic.md @@ -106,5 +106,5 @@ console.log({unsorted: unsortedArray, sorted: sortedArray}); Result: -![Output from sorting the Cat collection](../images/generic_quicksort_output.jpg) + From 0a5df7414dd2dc2a6d80decf42a3b34d9de84eed Mon Sep 17 00:00:00 2001 From: Paul Galvin Date: Wed, 2 Aug 2017 08:29:47 -0400 Subject: [PATCH 7/7] Last try on image url before giving up. --- algorithms/quickSort_generic.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/algorithms/quickSort_generic.md b/algorithms/quickSort_generic.md index 05bccb0..1fa2a05 100644 --- a/algorithms/quickSort_generic.md +++ b/algorithms/quickSort_generic.md @@ -106,5 +106,5 @@ console.log({unsorted: unsortedArray, sorted: sortedArray}); Result: - +