Algorithm-Implementations Show shell_sort.hpp Source code
Return
Download Algorithm-Implementations:
download shell_sort.hpp Source code
- Download Algorithm-Implementations Source code - Type:.hpp
- #pragma once
- #include <iostream>
- struct knuth_gap_generator_t {
- template<typename T>
- static int next_gap_value(T gap) {
- return 3 * gap + 1;
- }
- template<typename T>
- static int prev_gap_value(T gap) {
- return (gap - 1) / 3;
- }
- };
- template<class GapGenerator, class RandomAccessIterator>
- inline int init_gap(RandomAccessIterator begin, RandomAccessIterator end) {
- typedef typename std::iterator_traits<RandomAccessIterator>::difference_type difference_type;
- difference_type gap = 0;
- const difference_type size = std::distance(begin, end);
- while (true) {
- const difference_type next = GapGenerator::next_gap_value(gap);
- if (next > size) {
- break;
- }
- gap = next;
- }
- return gap;
- }
- template<class RandomAccessIterator>
- void insertion_sort(RandomAccessIterator begin, RandomAccessIterator end, typename std::iterator_traits<RandomAccessIterator>::difference_type gap = 1) {
- for (RandomAccessIterator i = begin + gap; i != end; ++i) {
- for (RandomAccessIterator j = i; j >= begin + gap; j -= gap) {
- if (*j < *(j - gap)) {
- std::iter_swap(j, j - gap);
- } else {
- break;
- }
- }
- }
- }
- template<class RandomAccessIterator, class GapGenerator = knuth_gap_generator_t>
- void shell_sort(RandomAccessIterator begin, RandomAccessIterator end) {
- int gap = init_gap<GapGenerator>(begin, end);
- while (gap >= 1) {
- insertion_sort(begin, end, gap);
- gap = GapGenerator::prev_gap_value(gap);
- }
- }
downloadshell_sort.hpp Source code
- Download Algorithm-Implementations Source code
Related Source Codes/Software:
raty - 2017-04-22
RDVTabBarController - Highly customizable tabBar and tabBarController fo... 2017-04-22
material-icon-lib - Library containing over 1500 material vector icons... 2017-04-21
httpdiff - Perform the same request against two HTTP servers ... 2017-04-21
jquerytools - The missing UI library for the Web
... 2017-04-21
mcrouter - Mcrouter is a memcached protocol router for scalin... 2017-04-22
dynomite - A generic dynamo implementation for different k-v ... 2017-04-22
kityminder - Baidu brain figure 2017-04-22
llvm - Mirror of official llvm git repository located at ... 2017-04-22
RBBAnimation - Block-based animations made easy, comes with easin... 2017-04-22
ied - 2017-04-29
Nimble - A Matcher Framework for Swift and Objective-C 2017-04-29
MHVideoPhotoGallery - A Photo and Video Gallery 2017-04-29
shoulda-matchers - Collection of testing matchers extracted from Shou... 2017-04-29
Android-SlideExpandableListView - A better ExpandableListView, with animated expanda... 2017-04-29
AppSales-Mobile - App Sales allows iPhone and Mac App Store develope... 2017-04-29
react-templates - Light weight templates for react
... 2017-04-28
afterglow-theme - A minimal dark Theme for Sublime Text 2 and 3 2017-04-28
jwt-go - Golang implementation of JSON Web Tokens (JWT) 2017-04-28
DeerResume - Tool MarkDown online resume, online preview, edit,... 2017-04-28