插入排序与希尔排序
来源:互联网 发布:lol鼠标宏编程走a设置 编辑:程序博客网 时间:2024/06/11 10:55
#include <iostream>#include <vector>#include <functional>using namespace std;template <typename Iterator ,typename Comparator >void insertionSort(const Iterator & begin,const Iterator & end,Comparator lessThan){ if(begin==end) return; for(auto p=begin+1;p!=end;++p) { auto tmp=std::move(*p); auto j=p; for(;j!=begin&&lessThan(tmp,*(j-1));j--) { *j=std::move(*(j-1)); } *j=std::move(tmp); }}template <typename Iterator>void insertionSort(const Iterator & begin,const Iterator & end){ insertionSort(begin,end,less<decltype(*begin)>{});}/*template <typename Comparable>void insertionSort(vector<Comparable> &vec){ for(int p=1;p<vec.size();p++) { Comparable tmp=std::move(vec[p]); int j=p; for(;j>0&&tmp<vec[j-1];j--) vec[j]=std::move(vec[j-1]); vec[j]=std::move(tmp); }}*/int main(int argc, const char * argv[]) { // insert code here... vector<int> a{1,6,3,5}; vector<int> b{1,6,3,5}; insertionSort(a.begin(), a.end(),greater<int>{}); insertionSort(b.begin(), b.end()); for(auto x:a) cout<<x<<endl; for(auto x:b) cout<<x<<endl; std::cout << "Hello, World!\n"; return 0;}template <typename Comparable>void shellSort(vector<Comparable> & a){ for(int gap=a.size()/2;gap>0;gap/=2) //缩减增量排序 { for(int i=gap;i<a.size();i++) //对增量位置后的每一个位置进行插入排序 { Comparable tmp=std::move(a[i]); int j=i; for(;j>=gap&&tmp<a[j-gap];j-=gap) a[j]=std::move(a[j-gap]); a[j]=std::move(tmp); } }}
阅读全文
0 0
- 插入排序与希尔排序
- 插入排序与希尔排序
- 插入排序与希尔排序
- 插入排序与希尔排序
- 插入排序与希尔排序
- 插入排序与希尔排序
- 排序:插入排序与希尔排序
- 数据结构之插入排序与希尔排序
- 直接插入排序与希尔排序
- 简单插入排序与希尔排序
- 数据结构-直接插入排序与希尔排序
- 直接插入排序与希尔排序
- 插入排序与希尔排序详解
- 【算法】简单插入排序与希尔排序
- 直接插入排序与希尔排序
- 直接插入排序与希尔排序
- 直接插入排序与希尔排序
- 插入排序--希尔排序
- linux下 open() write() read() close函数讲解
- ibm 5件事 系列文章
- 加载easyui中tree控件405问题
- extern的使用
- presto 0.180初体验
- 插入排序与希尔排序
- IDEA使用JSTL标签库配置方法和问题异常问题
- Maven之HelloWorld
- HDU-1392,POJ-3348(凸包周长,面积)
- python中的__file__
- swift UIScrollview 的基本使用
- tf.nn.bias_add
- 51Nod-1780-完美序列
- PBOC规范研究之四、文件结构及访问(转)