原文出处: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; } } |