首页 > 代码库 > 排列数据的输出

排列数据的输出

 排列组合是高中是学到的 知识,理论上很清楚,但如何使用代码实现,却一直没有尝试过,近段时间由于项目需要,写一个排列的算法,想不到却花费了不少时间。

   需求很简单,就是典型的排列应用。

例如输入:C0,C1,C2,C3,C4,输出C0,C1,C2,C3,C4的所有排列。

实现代码:

  /// <summary>
        /// 输出所有排列的数据
        /// </summary>
        /// <param name="columns">输入的排列的所有元素</param>
        /// <param name="columnsContain">输出元素列表,已添加的元素</param>
        /// <param name="key"></param>
        /// <returns></returns>
        private static string CreateAllSequenceData(List<string> columns, List<string> columnsContain, string key)
        {
            StringBuilder strs = new StringBuilder();
            List<string> columnsContaininer = new List<string>();
            bool hasAddParentcolumns = false;//是否已添加上层循环传入的元素
            for (int i = 0; i < columns.Count; i++)
            {
                string item = columns[i];
                if (!hasAddParentcolumns)
                {
                    columnsContaininer.AddRange(columnsContain);
                    hasAddParentcolumns = true;
                }
                if (columnsContaininer.Count == columns.Count)//所有元素已添加,输出排列
                {
                    string value = http://www.mamicode.com/GetSequenceKey(columnsContaininer);>
第二种算法:

   private static string CreateAllSequenceData2(List<string> columns, List<string> columnsContain, string key)        {            StringBuilder strs = new StringBuilder();            List<string> columnsContaininer = new List<string>();            List<string> InnerColumns = GetInnerColumns(columns, columnsContain);            bool hasAddParentcolumns = false;//是否已添加上层循环传入的元素            for (int i = 0; i < InnerColumns.Count; i++)            {                string item = InnerColumns[i];                if (!hasAddParentcolumns)                {                    columnsContaininer.AddRange(columnsContain);                    hasAddParentcolumns = true;                }                                       columnsContaininer.Add(item);                    if (columnsContaininer.Count == columns.Count)//所有元素已添加,输出排列                    {                        string value = http://www.mamicode.com/GetSequenceKey(columnsContaininer);>