From cbf7e4467edebea7012e74ce8a0f3cd7f3f1314e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=A1=E5=9D=82=E6=98=B4?= Date: Sun, 22 Dec 2024 15:33:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E5=85=AB=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- homework8/CMakeLists.txt | 6 ++++++ homework8/test1.cpp | 46 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 homework8/CMakeLists.txt create mode 100644 homework8/test1.cpp diff --git a/homework8/CMakeLists.txt b/homework8/CMakeLists.txt new file mode 100644 index 0000000..ece14c9 --- /dev/null +++ b/homework8/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.30) +project(homework8) + +set(CMAKE_CXX_STANDARD 20) + +add_executable(test1 test1.cpp) diff --git a/homework8/test1.cpp b/homework8/test1.cpp new file mode 100644 index 0000000..a129e2f --- /dev/null +++ b/homework8/test1.cpp @@ -0,0 +1,46 @@ +#include +#include + +using namespace std; + +template +void ShellSort(vector &v) { + int gap = v.size() / 2; + + while (gap > 0) { + for (int i = gap; i < v.size(); i++) { + T temp = v[i]; + int j; + for (j = i; j >= gap && v[j - gap] > temp; j -= gap) { + v[j] = v[j - gap]; + } + v[j] = temp; + } + cout << "间隔:" << gap << endl << "排序后:"; + for (int k = 0; k < v.size(); ++k) { + cout << v[k] << " "; + } + cout << endl; + gap = gap / 2; + } +} + +int main() { + vector v = {1, 3, 2, 4, 6, 5, 7, 10, 9, 8}; + vector::iterator it; + cout << "排序前" << endl; + for (it = v.begin(); it != v.end(); it++) { + cout << *it << " "; + } + cout << endl; + + ShellSort(v); + + cout << "排序后:" << endl; + for (it = v.begin(); it != v.end(); it++) { + cout << *it << " "; + } + cout << endl; + + return 0; +}