今天无聊复习了下一维数组排序,突想试试二维数组和交错数组。下面是小弟我乱写的交错数组排序。 
static void Main(string[] args)
        {
            int[][] No = new int[8][];
            No[0] = new int[8];
            No[1] = new int[8];            No[0][0]=33;
            No[0][1]=23;
            No[0][2]=5;
            No[0][3]=6;
            No[0][4]=24;
            No[0][5]=65;
            No[0][6]=34;
            No[0][7]=88;            No[1][0] = 32;
            No[1][1] = 34;
            No[1][2] = 45;
            No[1][3] = 13;
            No[1][4] = 78;
            No[1][5] = 90;
            No[1][6] = 15;
            No[1][7] = 76;
            Console.WriteLine("排序前的数组为:");
            for (int i = 0; i < No[i].Length; i++)
            {
                for (int j = 0; j < No[i].Length; j++)
                {
                    Console.Write(No[i][j] + ",");
                }
                
            }
            for (int i = 0; i < No.Length - 1; i++)
            {
                for (int j = 0; j < No.Length - 1 - i; j++)
                {
                    if (No[i][j] > No[i][j + 1])
                    {
                        int no = No[i][j];
                        No[i][j] = No[i][j + 1];
                        No[i][j + 1] = no;
                    }
                }
            }
            Console.WriteLine("\n排序后的数组为:");
            for (int i = 0; i < No[i].Length; i++)
            {
                for (int j = 0; j < No[i].Length; j++)
                {
                    Console.Write(No[i][j] + ",");
                }            }
            Console.ReadLine();程序运行到输出排序前数组(排序前数组都输出来了),然后就出现错误。错误在35行。
这样能排么- -!    有高手愿意分析下吗?。
谢谢拉-0-  
  

解决方案 »

  1.   

      for (int i = 0; i < No[i].Length; i++)
                {
                    for (int j = 0; j < No[i].Length; j++)
                    {
                        Console.Write(No[i][j] + ",");
                    }
                   
                } 
    ---------------------
    第一个for 里的 i < No[i].Length有问题    i=3是No[i].Length是什么
      

  2.   

    因为你的NO里只有No[0]和No[1]里有数据,所以操作no[n] n>1的话就会有异常,
    只能操作0,1的数据,其他的都是null
      

  3.   

    输出的是NO[0] NO[1]里面的数据,然后你的i++  变成 2了,所以在for (int i = 0; i < No[i].Length; i++) 这行出错了