如何使用Array.Sort对数组编号进行排序

时间:2014-11-17 04:25:07

标签: c# arrays sorting

我对它的工作原理有了一个很好的了解,我已经看到了关于如何使用它的其他例子,但我们无法弄清楚如何将它应用到我的代码中。

using System;

namespace ArrayRandomNumbers
{
    class RandomNumbers
    {
        public static void Main()
        {
            int[] num = new int[1000];
            Random rnd = new Random();

            for (int i = 0; i < 1000; i++)
            {        
                num[i] = rnd.Next(1000);

                Console.WriteLine(num[i]);
                Array.Sort(num); //Doesn't do anything here
                //Console.WriteLine(num[i] = rnd.Next(1000));
            }          
            Console.ReadLine();
        }
    }
}

3 个答案:

答案 0 :(得分:5)

Array.Sort(num);实际上对每次迭代进行排序,但效率很低,因为您只需要对数组进行一次排序而不是1000次。您需要将Array.Sort(num);置于for循环之外,并创建另一个for循环以打印已排序的数组。

int[] num = new int[1000];
Random rnd = new Random();

for (int i = 0; i < 1000; i++)
{        
    num[i] = rnd.Next(1000);

    Console.WriteLine(num[i]);
    //Console.WriteLine(num[i] = rnd.Next(1000));
}          

Console.WriteLine("Press Enter to sort the array");
Console.ReadLine();

// sort the array
Array.Sort(num);

// print the sorted array
for (int i = 0; i < 1000; i++)
{        
    Console.WriteLine(num[i]);
}          

Console.ReadLine();

答案 1 :(得分:0)

如果您想像原始代码一样完成此操作,您也可以执行以下操作 使用System;

namespace ArrayRandomNumbers
{
    class RandomNumbers
    {
        public static void Main()
        {
            int[] num = new int[1000];
            Random rnd = new Random();
            var randList = new List<int>();
            var distinctList = new List<int>();
            for (int i = 0; i < 1000; i++)
            {
                num[i] = rnd.Next(1000);
                randList.Add(num[i]);
                Console.WriteLine(randList[i]);
            }
            distinctList = randList.Distinct().ToList();
            distinctList.Sort();
            Console.ReadLine();

            distinctList.ForEach(delegate(int s)
            {
                Console.WriteLine(s.ToString());
            });
            Console.ReadLine(); 
        }
    }
} 

从左到右产生以下输出读数,一个简短的片段基于我运行时生成的随机数,如果你将这些数字写入文件,你会看到distinctList将具有你预期的排序值我是显示未排序的结果使用代码,当您在最后Console.ReadLine();检查时,您可以在调试器中看到自己

<强> 774 452 566 682 814 702 585 371 469 694 241 168 235 763 35 548 158 212 106 297 921 65 280 419 682 42 116 52 212 523 467 777 195 999 316 836 735 742 6 332 647 645 245 622 674 925 692 141 643 84 85 806 663 476 971 709 171 146 999 772 585 532 159 946 227 464 972 235 447 199 813 416 206 773 650 275 819 657 745 757 350 974 409 128 437 661 113 719 28 606 664 588 742 234 747 114 485 299 395 209 953 457 694 443 270 668 599 890 826 695 889 514 401 242 421 610 123 31 508 565 350 253 206 840 535 224 673 971 26 535 789 520 262 535 803 892 280 965 857 769 61 223 892 332 717 149 187 500 812 136 990 454 790 829 858 700 250 854 908 46 995 628 864 291 906 369 251 865 438 529 330 158 173 739 504 127 360 874 122 385 37 173 158 889 544 334 730 433 677 103 641 425 57 810 773 432 358 600 426 348 898 321 61 283 806 832 280 50 324 731 339 376 731 522 9 821 469 974 746 571 638 818 188 334 887 904 100 362 965 71 768 760 448 774 487 715 112 875 83 712 54 679 108 945 764 265 694 534 801 952 963 384 854 854 709 79 133 726 395 901 731 917 84 252 962 579 928 956 35 294 709 594 891 34 517 958 709 242 570 622 209 566 561 13 108 384 905 593 65 407 581 385 479 181 980 136 595 855 983 *

答案 2 :(得分:0)

只是提示@Carl

代码:

class Program
    {
        static void Main(string[] args)
        {
        var num = new int[1000];
        var rnd = new Random();

        Console.WriteLine("Before Sorting...");
        for (var i = 0; i < 1000; i++)
        {
            num[i] = rnd.Next(1000);

            Console.WriteLine(num[i]);
             //Doesn't do anything here
            //Console.WriteLine(num[i] = rnd.Next(1000));
        }
        Console.WriteLine("After Sorting...");
        Array.Sort(num);

        for (var i = 0; i < 1000; i++)
        {

            Console.WriteLine(num[i]);
            //Doesn't do anything here
            //Console.WriteLine(num[i] = rnd.Next(1000));
        }

        Console.ReadLine();
    }
}

流程是: 1)制作一个数组,在制作时打印它(可选你也可以对它进行排序,但我认为这样效率很低。) 2)对数组进行排序。 3)打印出排序数组。

你在做什么: 1)制造和阵列。 2)用随机数填充每个元素。 3)打印该随机数。 4)对目前为止的数组进行排序。

因此灾难,你看到了。