想写段关于排序的程序,要求实现对任意输入的不可知个数的整数数组进行排序,我写的程序如下:
using System;namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int n=0;
            int[] num=new int[0];
            Console.WriteLine("请依次输入要比较的数字并回车,直接输入00为结束输入");
            while (Console.ReadLine() != "0")//接收数字输入
            {
                Array.Resize<int>(ref num, n + 1);
                num[n] = int.Parse(Console.ReadLine());
                n++;
            }
            Console.WriteLine(n);
            //比较大小
            for (int i = 0; i < n; i++)
            {
                for (int j = i+1; j < n; j++)
                {
                    int temp;
                    if (num[i] > num[j])
                    {
                        temp = num[i];
                        num[i] = num[j];
                        num[j] = temp;
                    }
                }
            }
            //从小到大输出
            Console.WriteLine("排序的结果为:\n");
            for (int i = 0; i < n; i++)
            {
                Console.Write("  " + num[i]);
            }
            System.Threading.Thread.Sleep(10000);
        }
    }
}程序无法达到要求,请大家帮忙改下,另外,最后一句语句:System.Threading.Thread.Sleep(10000);是什么意思?

解决方案 »

  1.   

    程序为:
    using System;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                int n=0;
                int[] num=new int[0];
                Console.WriteLine("请依次输入要比较的数字并回车,直接输入00为结束输入");
                while (Console.ReadLine() != "00")//接收数字输入
                {
                    Array.Resize <int>(ref num, n + 1);
                    num[n] = int.Parse(Console.ReadLine());
                    n++;
                }
                //比较大小
                for (int i = 0; i  < n; i++)
                {
                    for (int j = i+1; j  < n; j++)
                    {
                        int temp;
                        if (num[i] > num[j])
                        {
                            temp = num[i];
                            num[i] = num[j];
                            num[j] = temp;
                        }
                    }
                }
                //从小到大输出
                Console.WriteLine("排序的结果为:\n");
                for (int i = 0; i  < n; i++)
                {
                    Console.Write("  " + num[i]);
                }
                System.Threading.Thread.Sleep(10000);
            }
        }
    }
      

  2.   

    int[] num=new int[0]; 这个声明的对吗?
    Array.Resize  <int>(ref num, n + 1); 请问你这个在这里面用有什么意义?第一你用泛型没必要,第二你用ref同样也是多余
    System.Threading.Thread.Sleep(10000);这个是线程停留十秒的意思,也没有什么意义,没有多线程,加这只不过为了在窗口中停留十秒,那不如用Console.ReadLine()呢如果你只是想要这样的功能ArrayList已经为你定制好了,只需要是int类型的就OK了。
    而如果你这样写也无可厚非,关键点在于,第一、对接受字符的处理
    第二、算法的实现(始终感觉冒泡不好,呵呵)。你的算法没有问题,输出没有问题。
    如果你把我上面提到的都弄了,那么毫无疑问,你的接收字符的地方有问题了
      

  3.   

    1 用ArrayList足矣;
    2 for(int i=0; i<arr.Count; i++);//不可用foreach
      

  4.   

    鄙人愚吨,我还是不懂,用ArrayList之后的数组应如何接受输入的数值?哪位大哥详细点指导一下小弟
      

  5.   

       System.Threading.Thread.Sleep(10000); 这个是睡眠   10000毫秒!
      

  6.   


    static void Main()
            {
                    Console.WriteLine("请依次输入要比较的数字");
                    string str = Console.ReadLine();
                    string [] strr= str.Split(new char[]{'\x20'});
                    //比较大小 
                    int[] num = new int[strr.Length];
                    for (int i = 0; i < strr.Length; i++)
                    {
                        num[i] = Convert.ToInt32(strr[i]);
                    }
                    for (int i = 0; i < strr.Length; i++)
                    {
                        for (int j = i + 1; j < strr.Length; j++)
                        {
                            int temp;
                            if (num[i] > num[j])
                            {
                                temp = num[i];
                                num[i] = num[j];
                                num[j] = temp;
                            }
                        }
                    }
                //从小到大输出 
                Console.WriteLine("排序的结果为:\n"); 
                for (int i = 0; i  < strr.Length; i++) 
                { 
                    Console.Write(num[i]+" "); 
                } 
                //或者Console.ReadLine();目的只是想看到窗口而已
                System.Threading.Thread.Sleep(10000); 
            } 
      

  7.   


    static void Main()
            {
                    Console.WriteLine("请依次输入要比较的数字");
                    string str = Console.ReadLine();
                    string [] strr= str.Split(new char[]{'\x20'});
                    //比较大小 
                    int[] num = new int[strr.Length];
                    for (int i = 0; i < strr.Length; i++)
                    {
                        num[i] = Convert.ToInt32(strr[i]);
                    }
                    for (int i = 0; i < strr.Length; i++)
                    {
                        for (int j = i + 1; j < strr.Length; j++)
                        {
                            int temp;
                            if (num[i] > num[j])
                            {
                                temp = num[i];
                                num[i] = num[j];
                                num[j] = temp;
                            }
                        }
                    }
                //从小到大输出 
                Console.WriteLine("排序的结果为:\n"); 
                for (int i = 0; i  < strr.Length; i++) 
                { 
                    Console.Write(num[i]+" "); 
                } 
                //或者Console.ReadLine();目的只是想看到窗口而已
                System.Threading.Thread.Sleep(10000); 
            } 
      

  8.   

    刚注释错了,不好意思,呵呵。终于知道怎么发C#的代码了,这样看起来好看多了,(*^__^*) 嘻嘻……static void Main()
            {
                    Console.WriteLine("请依次输入要比较的数字");
                    string str = Console.ReadLine();
                    string [] strr= str.Split(new char[]{'\x20'});//把输入按空格进行分开
                    //转化为int类型的数组
                    int[] num = new int[strr.Length];
                    for (int i = 0; i < strr.Length; i++)
                    {
                        num[i] = Convert.ToInt32(strr[i]);
                    }
                    //对数组进行冒泡排序
                    for (int i = 0; i < strr.Length; i++)
                    {
                        for (int j = i + 1; j < strr.Length; j++)
                        {
                            int temp;
                            if (num[i] > num[j])
                            {
                                temp = num[i];
                                num[i] = num[j];
                                num[j] = temp;
                            }
                        }
                    }
                //从小到大输出 
                Console.WriteLine("排序的结果为:\n"); 
                for (int i = 0; i  < strr.Length; i++) 
                { 
                    Console.Write(num[i]+" "); 
                } 
                //或者Console.ReadLine();目的只是想看到窗口而已
                System.Threading.Thread.Sleep(10000); 
            } 
      

  9.   

                while (Console.ReadLine() != "00")//接收数字输入 
                { 
                    Array.Resize  <int>(ref num, n + 1); 
                    num[n] = int.Parse(Console.ReadLine()); 
                    n++; 
                } 这段出现2次  Console.ReadLine()录入数字  
    而你第一个数字并没有放入数组中    而是第二数字放入数据库中以此类推     所以你排序下来只有你输入的长度一半!
      

  10.   

    using System;
    using System.Collections.Generic;
    using System.Text;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                int n = 0;
                string a;
                int[] num = new int[0];
                Console.WriteLine("请依次输入要比较的数字并回车,直接输入00为结束输入");
                do//接收数字输入 
                {
                    a = Console.ReadLine();
                    Array.Resize<int>(ref num, n + 1);
                    num[n] = int.Parse(a);
                    n++;
                }while(!a.Equals("100"));
                Console.WriteLine(n);
                //比较大小 
                for (int i = 0; i < n; i++)
                {
                    for (int j = i + 1; j < n; j++)
                    {
                        int temp;
                        if (num[i] > num[j])
                        {
                            temp = num[i];
                            num[i] = num[j];
                            num[j] = temp;
                        }
                    }
                }
                //从小到大输出 
                Console.WriteLine("排序的结果为:\n");
                for (int i = 0; i < n; i++)
                {
                    Console.Write("  " + num[i]);
                }
                System.Threading.Thread.Sleep(10000);
            }
        }
    } 你自己想哈whlie的条件哈!!