本帖最后由 dangqinghua 于 2010-06-18 17:16:06 编辑

解决方案 »

  1.   

    X1给的是错的,你看看,第一列中有三个“2”,而X2的第一列中只有两个“2”,
    我自已改了,你看看代码吧。
    static void Main(string[] args)
            {
                int[,] x1 = new int[,] { { 0, 0 }, { 0, 1 }, { 2, 0 }, { 2, 1 }, { 1, 0 }, { 1, 1 }, { 3, 0 }, { 3, 1 } };
                string[,] x2 = new string[,] { { "3", "0" }, { "3", "1" }, { "2", "0" }, { "2", "1" }, { "1", "0" }, { "1", "1" }, { "0", "0" }, { "0", "1" } };
                int tempX = 0;
                for (int w = 0; w < x1.GetLength(0) - 1; w++)
                {
                    for (int i = x1.GetLength(0) - 1; i > w; i--)
                    {
                        if (x1[i, 0] > x1[i - 1, 0])
                        {
                            for (int j = 0; j < x1.GetLength(1); j++)
                            {
                                tempX = x1[i, j];
                                x1[i, j] = x1[i - 1, j];
                                x1[i - 1, j] = tempX;
                            }
                        }
                        else if (x1[i, 0] == x1[i - 1, 0])
                        {
                            if (x1[i, 1] < x1[i - 1, 1])
                            {
                                for (int j = 0; j < x1.GetLength(1); j++)
                                {
                                    tempX = x1[i, j];
                                    x1[i, j] = x1[i - 1, j];
                                    x1[i - 1, j] = tempX;
                                }
                            }
                        }
                    }            }
                foreach (int iVal in x1)
                {
                    Console.Write("{0},", iVal);
                }
                Console.WriteLine();
                foreach (string sVal in x2)
                {
                    Console.Write("{0},", sVal);
                }
                Console.ReadKey();
            }
      

  2.   

    看到上面朋友写的代码我都快无语了,这个题有这么麻烦嘛;下面是我打的,朋友们看一下,有什么有对还请指点一二。
                
    int[,] x1 = new int[,] { { 0, 0 }, { 0, 1 }, { 1, 0 }, { 1, 1 }, { 2, 0 }, { 2, 1 }, { 3, 0 }, { 3, 1 } };
                int temp;
                for (int i = x1.GetLength(0) - 1; i >= 0; i-=2)
                {
                    temp = x1[i, 1];
                    x1[i, 1] = x1[i - 1, 1];
                    x1[i - 1, 1] = temp;
                }  
                for (int i = x1 .GetLength (0)-1; i >=0; i--)
                {
                    for (int j = 0; j < x1.GetLength(1); j++)
                    {
                        Console.Write("{0}", x1[i, j]);
                    }    
                    Console.WriteLine();
                }
      

  3.   


    /******************************************************************
    ** 文件名:  test_Default.cs
    ** 创建人:
    ** 创建日期: 2010-06-21
    ** 修改人:     
    ** 最后修改日期:
    ** 描 述:    将多维数组升/降序排列
    ** 版 本:1.0
    **---------------------------------------------------------------
    ** Copyright (c) 2010-2011 
    ******************************************************************/
    using System;
    using System.Web;
    public partial class test_Default : System.Web.UI.Page
    {
        private string temp0 = null;
        private string temp1 = null;
        private string[,] x1 = new string[,] 
                                            { 
                                              {"0", "0" },
                                              { "0", "1" }, 
                                              { "1", "0" }, 
                                              { "1", "1" }, 
                                              { "26", "0" }, 
                                              { "26", "1" },   
                                              { "122", "0" }, 
                                              { "122", "1" }, 
                                              { "2", "0" }, 
                                              { "2", "1" }, 
                                              { "3", "0" }, 
                                              { "3", "1" } 
                                            };
        private string[,] x2 = new string[,] 
                                            { 
                                              {"1", "0" },
                                              { "1", "1" }, 
                                              { "2", "0" }, 
                                              { "2", "1" }, 
                                              { "5", "0" }, 
                                              { "5", "1" }, 
                                              { "6", "0" }, 
                                              { "6", "1" } 
                                            };
        private string[,] x3 = new string[,] 
                                            { 
                                              { "0", "0" }, 
                                              { "0", "1" }, 
                                              { "1", "0" }, 
                                              { "1", "1" }, 
                                              { "2", "0" }, 
                                              { "2", "1" }, 
                                              { "3", "0" }, 
                                              { "3", "1" }                                        
                                            };
        private string[,] x4 = new string[,] 
                                            { 
                                               { "3", "0" },
                                               { "3", "1" }, 
                                               { "2", "0" }, 
                                               { "2", "1" }, 
                                               { "1", "0" }, 
                                               { "1", "1" }, 
                                               { "0", "0" }, 
                                               { "0", "1" } 
                                            };
        protected void Page_Load(object sender, EventArgs e)
        {
            ListSorting(x1);
            Response.Write(WriteStr(x1));
        }
        /// <summary>
        /// 将二维数组升/降序排列(按上标最大值排列)
        /// </summary>
        /// <param name="x1">参数</param>
        ///<param name="Type">排序类型1为升序,0为降序</param>
        /// <returns></returns>
        private string[,] Change(string[,] val, int Type)
        {
            for (int i = 0; i < (val.Length / 2); i++)
            {
                for (int j = i + 1; j < (val.Length / 2); j++)
                {
                    if (Type == 1)
                    {
                        if (Convert.ToInt32(val[i, 0]) <= Convert.ToInt32(val[j, 0]))
                        {
                            temp0 = val[i, 0];                //0,0            
                            temp1 = val[i, 1];                //0,1                   
                            val[i, 0] = val[j, 0];            //0,0=1,0
                            val[i, 1] = val[j, 1];            //0,1=1,1                   
                            val[j, 0] = temp0;                //1,0=0,0
                            val[j, 1] = temp1;                //1,1=0,1
                            if (val[i, 0] == val[j, 0])        //0,0=1,0
                            {
                                if (Convert.ToInt32(val[i, 1]) > Convert.ToInt32(val[j, 1]))  //0,1>1,1 
                                {
                                    temp0 = val[i, 1];       //0,1
                                    val[i, 1] = val[j, 1];   //0,1=1,1
                                    val[j, 1] = temp0;       //1,1                     
                                }
                            }
                        }
                    }
                    if (Type == 0)
                    {
                        if (Convert.ToInt32(val[i, 0]) >= Convert.ToInt32(val[j, 0]))
                        {
                            temp0 = val[i, 0];                //0,0            
                            temp1 = val[i, 1];                //0,1                   
                            val[i, 0] = val[j, 0];            //0,0=1,0
                            val[i, 1] = val[j, 1];            //0,1=1,1                   
                            val[j, 0] = temp0;                //1,0=0,0
                            val[j, 1] = temp1;                //1,1=0,1
                            if (val[i, 0] == val[j, 0])        //0,0=1,0
                            {
                                if (Convert.ToInt32(val[i, 1]) > Convert.ToInt32(val[j, 1]))  //0,1>1,1 
                                {
                                    temp0 = val[i, 1];       //0,1
                                    val[i, 1] = val[j, 1];   //0,1=1,1
                                    val[j, 1] = temp0;       //1,1                     
                                }
                            }
                        }
                    }
                }
            }
            return val;
        }
        /// <summary>
        ///  将二维数降序排列(按降序将上标排列)
        /// </summary>
        /// <param name="val"></param>
        private void ListSorting(string[,] val)
        {
            int strLength = val.Length / 2;
            for (int i = 0; i < strLength / 2; i++)
            {
                temp0 = val[i, 0];
                temp1 = val[i, 1];
                val[i, 0] = val[strLength - 1 - i, 0];
                val[i, 1] = val[strLength - 1 - i, 1];
                val[strLength - 1 - i, 0] = temp0;
                val[strLength - 1 - i, 1] = temp1;
            }
            for (int i = 0; i < strLength; i++)
            {
                for (int j = i + 1; j < (val.Length / 2); j++)
                {
                    if (val[i, 0] == val[j, 0])
                    {
                        if (Convert.ToInt32(val[i, 1]) > Convert.ToInt32(val[j, 1]))
                        {
                            temp0 = val[i, 1];
                            val[i, 1] = val[j, 1];
                            val[j, 1] = temp0;
                        }
                    }
                }
            }
        }
        /// <summary>
        /// 输出二维数组
        /// </summary>
        /// <param name="val"></param>
        /// <returns></returns>
        private static string WriteStr(string[,] val)
        {
            string str = "";
            str += "{";
            for (int i = 0; i < val.Length / 2; i++)
            {
                str += "{";
                for (int j = 0; j < 2; j++)
                {
                    str += val[i, j] + ",";
                }
                str = str.Trim(',') + "},";
            }
            str = str.Trim(',') + "}";
            return str;
        }
    }
    我写的不过谢谢楼上的哥们