编写一个递归算法,输出自然数1到n这n个元素的全排列?谢谢各位了

解决方案 »

  1.   

    class GroupSort
        {
            private List<int> _listItem = new List<int>();
            private List<int> _listGroup = new List<int>();
            private List<string> _listSortResult = new List<string>();
            private List<int> _listFlag = new List<int>();
            private int _count;
            
            public GroupSort(List<int> listGroup)
            {
                _listGroup = listGroup;
                _count = listGroup.Count;
                for(int i = 0; i < _count; ++i)
                {
                    _listItem.Add(-1);
                    _listFlag.Add(0);
                }
            }        public void StartSort()
            {
                Sort(0);
            }        private void Sort(int index)
            {
                if (index == _count)
                {
                    string item = "";
                    for (int i = 0; i < _count; i++)
                    {
                        item += _listItem[i];
                    }
                    _listSortResult.Add(item);
                }
                else
                {
                    for (int i = 0; i < _count; i++)
                    {
                        if (_listFlag[i] == 0)
                        {
                            _listFlag[i] = 1;
                            _listItem[index] = _listGroup[i];
                            Sort(index + 1);
                            _listFlag[i] = 0;
                        }
                    }
                }
            }        public List<string> SortResult
            {
                get
                {
                    return _listSortResult;
                }
            }
        }