- 博客(5)
- 收藏
- 关注
原创 用递归实现全排列
如将s="ABCD"实现排列组合,有4!种排列方式。 思路:s的排列可分为: 'A'打头的6个排列; 'B'打头的6个排列; 'C'打头的6个排列; 'C’打头的6个排列; 而每个以A打头的排列中,在A的后面跟着是BCD的不同排列组合。这就给出了一个递归的解决方法。 /*用递归进行全排列*/ #include #include using namespace std; void
2014-12-26 17:37:29 847
原创 排序算法一:插入排序
插入排序: 1.整个排序包括两层循环。用迭代器i循环通过容器,在每次循环迭代中,使用另一个循环根据小于i的位置上的项将*i插入到其对应的位置。 #include #include #include #include using namespace std; void linear_insert(int *first,int *last,int value) { if(value<*f
2014-12-22 16:59:55 309
转载 STL中的rotate
template inline void rotate(ForwardIterator first,ForwardIterator middle,ForwardIterator last) { if(first==middle||middle==last) return; _rotate(first,middle,last,distance_type(first),iterator_catog
2014-12-18 22:39:08 364
翻译 STL中与快速排序媲美的merge sort
在SGI STL中,采用的排序法是IntroSort(一种比快速排序考虑更加周详的算法)。 而mergesort采用的是分而治之的思想,利用的是将两个有序的区间归并为一个有序区间,这通过STL中的inplace_merge可以实现。 先将区间对半分,左右两段各自排序,再利用inplace_merge重新组合为一个有序区间。对半分割的操作可以递归进行,知道每一小段的长度为0或1(那么这一小段也就
2014-12-18 11:00:04 1201
转载 全排列
看侯捷的STL源码剖析,讲述了一个next_permutation的算法,用于计算排列组合。 template bool next_permutation(BidirectionalIterator first,BidirectionalIterator last) { if(first==last) return false; BidirectionalIterator i; i=las
2014-12-17 09:33:08 470
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人