//-----------------------------------------------------------------------------
//
// 算法:排列類
//
// 版權所有(C) Snowdust
// 個人博客 http://blog.csdn.net/snowdust & http://snowdust.cnblogs.com
// MSN & Email [email protected]
//
// 此源代碼可免費用於各類軟件(含商業軟件)
// 允許對此代碼的進一步修改與開發
// 但必須完整保留此版權信息
//
// 調用方法如下:
//
// 1.GetPermutation(T[], startIndex, endIndex)
// 返回從startIndex到endIndex的排列
//
// 2.GetPermutation(T[])
// 返回數組所有元素的全排列
//
// 版本歷史:
// V0.1 2010-01-20 摘要:首次創建
//
//-----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
namespace Arithmetic
{
public class Permutation<T>
{
/// <summary>
/// 交換兩個變量
/// </summary>
/// <param name="a">變量1</param>
/// <param name="b">變量2</param>
public static void Swap(ref T a, ref T b)
{
T temp = a;
a = b;
b = temp;
}
/// <summary>
/// 遞歸算法求排列(私有成員)
/// </summary>
/// <param name="list">返回的列表</param>
/// <param name="t">原始數組</param>
/// <param name="startIndex">起始標號</param>
/// <param name="endIndex