C#中如何申请动态数组

我想申请一个数组,自己输入数,然后对数组进行排序,求大神教如果可以把排序的方法也说了吧... 我想申请一个数组,自己输入数,然后对数组进行排序,求大神教如果可以把排序的方法也说了吧 展开
 我来答
郏鸿祯C6
推荐于2017-09-28 · TA获得超过4549个赞
知道小有建树答主
回答量:1601
采纳率:50%
帮助的人:1201万
展开全部

C#中并没有你想要的不定长数组,我给你两个解决方案:

第一种是让用户一次性输入一个用“,”分隔的字符串,如“1,2,3,4,5”,然后后台根据元素的个数确定数组的长度:

Console.WriteLine("Please input numbers in format (1,2,3,4,...100)");
            var input = Console.ReadLine();
            var strings = input.Split(',');
            var numbers = new double[strings.Length];

            for (int i = 0; i < strings.Length; i++)
            {
                numbers[i] = Convert.ToDouble(strings[i]);
            }

            bool flag = true;
            double temp;
            int numLength = numbers.Length;
            //sorting an array
            for (int i = 1; (i <= (numLength - 1)) && flag; i++)
            {
                flag = false;
                for (int j = 0; j < (numLength - 1); j++)
                {
                    if (numbers[j + 1] > numbers[j])
                    {
                        temp = numbers[j];
                        numbers[j] = numbers[j + 1];
                        numbers[j + 1] = temp;
                        flag = true;
                    }
                }
            }

            Console.WriteLine(string.Join(",", numbers));

第二种方法可以用List<double>来实现动态加载新的元素:

     var input = string.Empty;

            var numberList = new List<double>();

            while (!input.Equals("Sort"))
            {
                Console.WriteLine("Please input a number, input \"Sort\" to start sorting the array.");
                input = Console.ReadLine();

                if (!input.Equals("Sort"))
                {
                    numberList.Add(Convert.ToDouble(input));
                }
            }

            Console.WriteLine("Original array: {0}", string.Join(",", numberList));

            numberList.Sort(new DoubleComparer());

            Console.WriteLine("Sorted array: {0}", string.Join(",", numberList));

            Console.WriteLine("Sorting");

其中的DoubleComparer的定义为:

class DoubleComparer : IComparer<double>
        {
            public int Compare(double x, double y)
            {
                return x > y ? -1 : x == y ? 0 : 1;
            }
        }
寒枫0328
推荐于2017-10-10 · 超过18用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:38.8万
展开全部
用List就可以了,List<类型> list=new List<类型>();
就可以动态的添加删除了。
如果需要转化为数组,类型[] array=list.ToArray();就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幻想武士
2014-03-19 · TA获得超过1074个赞
知道小有建树答主
回答量:639
采纳率:90%
帮助的人:401万
展开全部
bool b = true;//表示是否循环输入
int[] intarr = new int[5];//定义初始大小为5的数组
int i = 0;//表示在数组中的索引
do
{
Console.WriteLine("请输入数字:");
string ss = Console.ReadLine();
try
{
int sum = Convert.ToInt32(ss);
if (i == intarr.Length - 1)
{
//输入的数字达到数组上限。重新定义双倍空间的数组
int[] intarr1 = new int[intarr.Length * 2];
for (int j = 0; j < intarr.Length; j++)
{
//把intarr中第j个数组赋值到intarr1中第j个
intarr1[j] = intarr[j];
}
intarr = intarr1;//转换后重新赋值给定义的数组
}
intarr[i] = sum;
i++;
Console.WriteLine("是否继续输入?(y/n)");
string str = Console.ReadLine();
if (str != "y")
{
b = false;
}
}
catch (Exception)
{
Console.WriteLine("输入字符串不是数字,是否重新输入?(y/n)");
string str = Console.ReadLine();
if (str != "y")
{
b = false;
}
}
} while (b);
Console.WriteLine("输入数字如下:");
for (int k = 0; k < intarr.Length; k++)
{
Console.WriteLine(intarr[k] + "==");
}
至于排序的方法,自己可以写一个类似于冒泡排序的
追问
我就是申请一个动态数组而已,怎么如此麻烦啊
追答
这不是麻烦不麻烦的事情。动态数组当然是动态的,即数组的空间长度是不固定的。可根据输入的次数来固定空间数组的长度。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-19
展开全部
不知道啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式