From 25f29759741a2d040be9a6fb1f7a1b30dbac5d07 Mon Sep 17 00:00:00 2001 From: Ben Date: Wed, 3 Nov 2021 14:27:58 +0000 Subject: [PATCH] Mergesort and Quicksort --- .../Quicksort and Mergesort.cpp | 84 ++++++++++ .../Quicksort and Mergesort.sln | 31 ++++ .../Quicksort and Mergesort.vcxproj | 147 ++++++++++++++++++ 3 files changed, 262 insertions(+) create mode 100644 Quicksort and Mergesort/Quicksort and Mergesort.cpp create mode 100644 Quicksort and Mergesort/Quicksort and Mergesort.sln create mode 100644 Quicksort and Mergesort/Quicksort and Mergesort.vcxproj diff --git a/Quicksort and Mergesort/Quicksort and Mergesort.cpp b/Quicksort and Mergesort/Quicksort and Mergesort.cpp new file mode 100644 index 0000000..ff58e99 --- /dev/null +++ b/Quicksort and Mergesort/Quicksort and Mergesort.cpp @@ -0,0 +1,84 @@ +#include + +void PrintArr(int* arr, int size) +{ + for (int i = 0; i < size; i++) + { + std::cout << arr[i] << " "; + } + std::cout << std::endl; +} + +void ShuffleArr(int* arr, int size) +{ + size_t i; + for (i = 0; i < size - 1; i++) + { + size_t j = i + rand() / (RAND_MAX / (size - i) + 1); + int t = arr[j]; + arr[j] = arr[i]; + arr[i] = t; + } +} + +void Swap(int* a, int* b) +{ + int t = *a; + *a = *b; + *b = t; +} + +void CopyArr(int* source, int* target, int start, int end) +{ + for (int i = start; i < end; i++) + { + target[i] = source[i]; + } +} + + +void Merge(int* arr, int start, int mid, int end) +{ + std::cout << start << " " << mid << " " << end << std::endl; + int* leftHalf = new int[mid - start + 1]; + int* rightHalf = new int[end - mid]; + + CopyArr(arr, leftHalf, 0, mid); + CopyArr(arr, rightHalf, mid + 1, end); + + // merge together + int leftIndex = 0; + int rightIndex = 0; + for (int i = 0; i < end - start; i++) + { + + } + +} + +void MergeSort(int* arr, int start, int end) +{ + int mid = start + (start + end) / 2; + if (start >= end) + MergeSort(arr, start, mid); + MergeSort(arr, mid + 1, end); + Merge(arr, start, mid, end); +} + + +int main() +{ + int* arr = new int[100]; + for (int i = 0; i < 100; i++) + arr[i] = i; + + // MergeSort + std::cout << "Merge Sort" << std::endl; + ShuffleArr(arr, 100); + MergeSort(arr, 0, 100); + PrintArr(arr, 100); + + // QuickSort + ShuffleArr(arr, 100); + +} diff --git a/Quicksort and Mergesort/Quicksort and Mergesort.sln b/Quicksort and Mergesort/Quicksort and Mergesort.sln new file mode 100644 index 0000000..06b2d40 --- /dev/null +++ b/Quicksort and Mergesort/Quicksort and Mergesort.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31808.319 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Quicksort and Mergesort", "Quicksort and Mergesort.vcxproj", "{8B9DC41C-3596-4DF8-9033-C271426EA8C0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8B9DC41C-3596-4DF8-9033-C271426EA8C0}.Debug|x64.ActiveCfg = Debug|x64 + {8B9DC41C-3596-4DF8-9033-C271426EA8C0}.Debug|x64.Build.0 = Debug|x64 + {8B9DC41C-3596-4DF8-9033-C271426EA8C0}.Debug|x86.ActiveCfg = Debug|Win32 + {8B9DC41C-3596-4DF8-9033-C271426EA8C0}.Debug|x86.Build.0 = Debug|Win32 + {8B9DC41C-3596-4DF8-9033-C271426EA8C0}.Release|x64.ActiveCfg = Release|x64 + {8B9DC41C-3596-4DF8-9033-C271426EA8C0}.Release|x64.Build.0 = Release|x64 + {8B9DC41C-3596-4DF8-9033-C271426EA8C0}.Release|x86.ActiveCfg = Release|Win32 + {8B9DC41C-3596-4DF8-9033-C271426EA8C0}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {DD9C34C8-2219-48FD-BBD7-795EA892E0DB} + EndGlobalSection +EndGlobal diff --git a/Quicksort and Mergesort/Quicksort and Mergesort.vcxproj b/Quicksort and Mergesort/Quicksort and Mergesort.vcxproj new file mode 100644 index 0000000..4004051 --- /dev/null +++ b/Quicksort and Mergesort/Quicksort and Mergesort.vcxproj @@ -0,0 +1,147 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {8b9dc41c-3596-4df8-9033-c271426ea8c0} + QuicksortandMergesort + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file