我不确定我的实施有什么问题。我该如何解决这个问题?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SelectionSort
{
class Program
{
static void algorithm(int[] to_sort)
{
int bufor;
for (int i = 0; i < to_sort.Length; i++)
{
for (int j = i + 1; j < to_sort.Length; j++)
{
if (to_sort[i] >= to_sort[j])
{
bufor = to_sort[i];
to_sort[i] = to_sort[j];
to_sort[j] = bufor;
}
}
}
}
static void Main(string[] args)
{
int[] to_sort = new int[100];
Console.WriteLine("");
for (int i = 1; i < 100; i++)
{
Console.Write(to_sort[i] + " ");
}
Console.WriteLine("");
algorithm(to_sort);
Console.WriteLine("\n");
Console.WriteLine("Sorted list:");
for (int i = 0; i < 100; i++)
{
Console.Write(to_sort[i] + " ");
}
Console.Read();
}
}
}
这会产生以下输出:
Original list: 00000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
Sorted list: 000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
看起来我的数组(int [] to_sort)是空的,我是对的吗?我怎么能得到这个:
Original list: 123456789....100
Sorted list: 123456789...100
答案 0 :(得分:2)
也许你来自C ++世界,初始化数组并不意味着数组是&#34; clean &#34; (恰好位于分配的内存中的数据保持不变),但在C#中如果初始化数组如下:
int[] to_sort = new int[100];
这意味着您构建一个数组,其中每个元素都设置为default(T)
,类型为T
。对于int
0
(对象为null
,等等)。所以你刚刚构造了一个用零填充的数组。
但是,您可以使用随机数字填充它,例如:
Random rand = new Random();
for(int i = 0; i < to_sort.Length; i++) {
to_sort[i] = rand.Next(0,1000);
}
修改强>
根据您的评论,您希望将其填入职位,您可以这样做:
for(int i = 0; i < to_sort.Length; i++) {
to_sort[i] = i+1;
}
答案 1 :(得分:1)
我认为初始化序列数组的最简单和最简单的方法是这样的:
int[] to_sort = Enumerable.Range(1, 100).ToArray();
您所拥有的只是分配数组并使用int
的默认值填充它,即0
:
int[] to_sort = new int[100];