C 泛型程式設計練習二 希爾排序

2021-10-03 14:15:19 字數 1555 閱讀 6652

#pragma once

#include #include#include#include#include#include#include#include#includeclass tools

/* 列印陣列

*/ templatestatic void dump_vector(const std::vector& arg, std::string delimiter = std::string(" "))

if (arg.size() > 0)std::cout << arg[arg.size() - 1] << std::endl;

}public:

templateusing compare_func=std::function;

//預設比較函式,從小到大

templatestruct less

}; //預設比較函式,從大到小

templatestruct more

}; /*

獲取隨機數陣列

*/ templatestatic std::vectorget_random_vector(t upper_bound, t lower_bound = 0, uint64_t element_size = 100)

else

}return std::move(ret);

} /*

直接插入排序

*/template>

static std::vector& straight_insert_sort(std::vector&arg, int64_t begin = 0, int64_t distance = 1)

arg[j] = tmp;}}

}return arg;

} /*

二分直接插入排序

*/template>

static std::vector& half_straight_insert_sort(std::vector& arg)

//可在right後方插入

else if (!comp(arg[i], arg[right]))

else

else }}

auto tmp = arg[i];

for (auto j = i-1; j >= left; j--)

arg[left] = tmp;

}return arg;

} /*

希爾排序

*/class default_distance_func

};class default_distance_func2

};template,typename distance_func= default_distance_func>

static std::vector& shell_sort(std::vector& arg,uint32_t max_distance=0)

}return arg;

} };/*main.cpp*/

#include #include "tools.h"

int main()

C語言泛型程式設計 泛型氣泡排序

在實際程式設計中,常常會需要一些方法 函式 比如排序,它們具體實現基本一致,僅僅只有引數型別不同,那麼可不可以有一種通用的函式,不管是什麼型別的引數都可以通用呢?泛型程式設計 泛型即是指具有在多種資料型別上皆可操作的含義,與模板有些相似。利用泛型程式設計,我們可以寫一些通用的函式,以減少 量,實現 ...

C語言泛型程式設計 泛型氣泡排序

在實際程式設計中,常常會需要一些方法 函式 比如排序,它們具體實現基本一致,僅僅只有引數型別不同,那麼可不可以有一種通用的函式,不管是什麼型別的引數都可以通用呢?泛型程式設計 泛型即是指具有在多種資料型別上皆可操作的含義,與模板有些相似。利用泛型程式設計,我們可以寫一些通用的函式,以減少 量,實現 ...

C 泛型程式設計總結(二)

目錄 7.插入insert 的變形 8.function object 9.設計泛型演算法function object adapter與insertion adapter 10.關聯容器map和set 11.iostream iterator 7.插入insert 的變形 8.function o...