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