原文出处:https://zhidao.baidu.com/question/1603714274790064067.html
【提问】
我想申请一个数组,自己输入数,然后对数组进行排序,求大神教如果可以把排序的方法也说了吧
最佳答案
用List就可以了,List<类型> list=new List<类型>(); 就可以动态的添加删除了。 如果需要转化为数组,类型[] array=list.ToArray();就可以了。
其他回答
C#中并没有你想要的不定长数组,我给你两个解决方案:
第一种是让用户一次性输入一个用“,”分隔的字符串,如“1,2,3,4,5”,然后后台根据元素的个数确定数组的长度:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
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>来实现动态加载新的元素:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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的定义为:
|
1
2
3
4
5
6
7
|
class DoubleComparer : IComparer<double> { public int Compare(double x, double y) { return x > y ? -1 : x == y ? 0 : 1; } } |