生成全排序算法

17 篇文章 1 订阅

记录,主要是明白递归的过程。

#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;
}
结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值