有一个数组
string[] strs = new string[7]{"1","2","3","4","5","6","7"};//要求按照如下输出:
1 4 6
2 5 7
3如何将strs 重新排序成如上的效果呢?
strs = new string[7]{"1","4","6","2","5","7","8","7"};

解决方案 »

  1.   

    /* 娘娘的自己搞定了,代码如下:总结一下:
    1\误区:起初想通过两个二维数组通过交换x与y的坐标完成排序,但发现如果有重复的元素时就会出问题
    2\转折:突然想到将所有元素插入到一个二维数组中就不会出现对重复元素的问题
    */public class Class1
     static void Main(string[] args)
            {
                int[] ints = new int[] { 1,2,3,4,5,6,7,8,9};//数组            int[,] iii = Sort(ints);            Print(iii);            Console.Read();        }        static int[,] Sort(int[] ints)
            {            int y = ints.Length / 4 + (ints.Length % 4 == 0 ? 0 : 1);//多维数组的行数            int x = 4;//多维数组的行数            int[,] iii = new int[y, x];//多维数组            int ix = 0;//多维数组的x下标            int iy = 0;//多维数组的y下标            for (int i = 0; i < ints.Length; i++)
                {                iii[ix, iy] = ints[i];                if (ix + 1 >= y)
                    {                    // 超过多维数组的最大行数                    ix = 0;                    iy += 1;
                    }
                    else
                    {                    ix += 1;                    if ((ix * x + iy + 1 > ints.Length))
                        {                        // 元素数量超过规定数量                        ix = 0;                        iy += 1;                    }
                    }            }            return iii;
                
            }        static void Print(int[,] iii)
            {            for (int i = 0; i < iii.GetLength(0); i++)
                {                for (int j = 0; j < iii.GetLength(1); j++)
                    {                    Console.Write(iii[i,j].ToString()+"\t");
                        
                    }
                    Console.WriteLine();
                }
            }
    }
      

  2.   

    楼主题目说是一个集合,我还以为是System.Collection命名空间里的集合类,进来一看是一维数组,题目直接说一维数组多好,4楼又说是二维数组,楼主可知道二维数组是 int[,]这种形式,不是int[][],你那个畸形的数字矩阵明明是int[][]。就不要叫它二维数组了。你还是先补补基础知识比较好。纵向排序你可以研究集合 DataTable 的排序。虽然和你说的纵向排序不是一个意思,不过你这跟本就不叫纵向排序。你这是把 1472536 7个数字的一维数组冒泡排序,然后填充进了一个形状奇怪的int[][]。
      

  3.   

    to 活得痛快,呵呵:)to ProjectDD ,我处理这个问题时第一个想到的也是行与列交换,但是实际上有问题...比如行列多次交换的问题to vrhero ,我认为这个是排序问题,排序== 排列顺序.