-
셸 정렬 (Shell Sort)언어/C, C++ 2021. 1. 26. 21:49
#pragma once class ShellSort { private: int* m_data; int m_size; public: ShellSort(int MAX = 100); ~ShellSort(); void Sort(); void InitData(int* data); int GetSize(); int* GetData(); };
ShellSort.h
#include "ShellSort.h" ShellSort::ShellSort(int MAX) { m_data = new int[MAX]; m_size = MAX; } ShellSort::~ShellSort() { if (m_data) delete[] m_data; } void ShellSort::Sort() { int length = GetSize(); int* data = GetData(); int i, j, current; int h; for (h = 1; h <= length / 5; h = 3 * h + 1); for (; h > 0; h /= 3) { for (i = h; i < length; i++) { current = data[i]; j = i; while (j >= h && data[j - h] > current) { data[j] = data[j - h]; j -= h; } data[j] = current; } } } void ShellSort::InitData(int* data) { for (int i = 0; i < m_size; i++) m_data[i] = data[i]; } int ShellSort::GetSize() { return m_size; } int* ShellSort::GetData() { return m_data; }
'언어 > C, C++' 카테고리의 다른 글
쾌속 정렬 (Quick Sort) (0) 2021.01.27 합병 정렬 (Merge Sort) (0) 2021.01.27 삽입 정렬 (Insertion Sort) (0) 2021.01.26 버블 정렬 (Bubble Sort) (0) 2021.01.25 선택 정렬 (Selection Sort) (0) 2021.01.25