选择排序实施

时间:2017-01-20 18:47:09

标签: c#

我不确定我的实施有什么问题。我该如何解决这个问题?

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

2 个答案:

答案 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];