生成全排序算法
2015-10-25 21:11
316 查看
记录,主要是明白递归的过程。
#include <iostream>
using namespace std;
//int out1 = 0;
template <typename T>
inline void swap(T *array, unsigned int i, unsigned int j)
{
T t = array[i];
array[i] = array[j];
array[j] = t;
}
/*
* 递归输出序列的全排列
*/
void FullArray(char *array, size_t array_size, unsigned int index)
{
if(index >= array_size)
{
for(unsigned int i = 0; i < array_size; ++i)
{
cout << array[i] << ' ';
}
cout << '\n';
return;
}
for(unsigned int i = index; i < array_size; ++i)
{
/*out1++;
cout << index << out1 << endl;*/
swap(array, i, index);
FullArray(array, array_size, index + 1);
swap(array, i, index);
}
}
int main()
{
char array[] = "abcd";
int index = 0, arraysize = 4;
FullArray(array, arraysize , index);
return 0;
}结果:
#include <iostream>
using namespace std;
//int out1 = 0;
template <typename T>
inline void swap(T *array, unsigned int i, unsigned int j)
{
T t = array[i];
array[i] = array[j];
array[j] = t;
}
/*
* 递归输出序列的全排列
*/
void FullArray(char *array, size_t array_size, unsigned int index)
{
if(index >= array_size)
{
for(unsigned int i = 0; i < array_size; ++i)
{
cout << array[i] << ' ';
}
cout << '\n';
return;
}
for(unsigned int i = index; i < array_size; ++i)
{
/*out1++;
cout << index << out1 << endl;*/
swap(array, i, index);
FullArray(array, array_size, index + 1);
swap(array, i, index);
}
}
int main()
{
char array[] = "abcd";
int index = 0, arraysize = 4;
FullArray(array, arraysize , index);
return 0;
}结果:
相关文章推荐
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 有关数据库SQL递归查询在不同数据库中的实现方法
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#中的递归APS和CPS模式详解
- C#通过yield实现数组全排列的方法
- C#冒泡法排序算法实例分析
- WinForm实现按名称递归查找控件的方法
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- C#中的尾递归与Continuation详解
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法