#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...