مرتب کردن آرایه ها توسط کلاس Array

یکی از نیازهایی که در بیشتر موارد در هنگام برنامه نویسی به آن نیاز خواهیم داشت مرتب کردن داده های مختلف می باشد . به طور مثال چاپ نمرات یک دانشجو به صورت صعودی و یا برای پیدا کردن مقاله ای که بیشترین  بازید را داشته و یا بیشترین کالای فروخته شده و... می توان رکورد های مورد نظر را مرتب کرده و رکورد مورد نظر خود را بر اساس بیشترین مقدار و یا بلعکس دریافت کنیم . 

در این مقاله مرتب کردن داده هایی از نوع های int,string و مرتب کردن بر اساس یک فیلد یک کلاس بررسی خواهد شد .

برای مرتب کردن در این مقاله از متد Sort از کلاس Array استفاده میکنیم ، شکل کلی آن به صورت زیر خواهد بود :

Array.sorty(Array);

 

توجه داشته باشید که نمی توان از کلاس فوق شی ایجاد کرد .در صورت ساخت شی از کلاس  Array با خطای زیر روبه رو خواهید شد :

Cannot create an instance of the abstract class or interface 'System.Array

 مرتب کردن داده هایی از نوع int :

در ابتدا مانند زیر آرایه ای از انواع اعداد صحیح به صورت نا مرتب می نویسیم :

int[] intArray = new int[] {8,5, 2,3,4,1,15};

برای مرتب کردن به صورت زیر عمل می کنیم :

//Sort

Array.Sort(intArray);

// write array

            foreach (int item in intArray)

            {MessageBox.Show(item.ToString());}

مرتب کردن نوع string :

در ابتدا آرایه ای نامرتب از رشته ها را به صورت زیر می نویسیم :

string[] StringArray = new string[] { "o", "ali", "reza", "bahram" }; 

 و برای مرتب کردن به صورت زیر عمل می کنیم .

//Sort

Array.Sort(StringArray);

// write aarry

            foreach (string item in StringArray)

            { MessageBox.Show(item);}

مرتب کردن داده هایی با نوع سفارشی توسط delegate :

در زیر کلاسی را تعریف کرده ایم با دو فیلد name,age که قصد داریم بر اساس یکی از فیلد های آن مرتب کنیم .

public class User

        {

            public int Age { get; set; }

            public string Name { get; set; }

        }

از کلاس فوق آرایه ای با داده های متفاوت تشکیل می دهیم :

 

User[] Users = new User[] {

            new User{Age=12, Name="amin"},

            new User{Age=10, Name="yasin"}

            };

 

// sort

Array.Sort(Users, delegate(User user1, User user2)

            {

                return user1.Name.CompareTo(user2.Name);

            });

//write array

            foreach (User item in Users)

            { MessageBox.Show(item.Name); }


توسط : عثمان رحیمی  2 ماه قبل ، سه شنبه 4 شهریور 1393 ساعت 16:12  0  2474

نظر شما برای ما مهم است و به ما در بهبود سایت کمک میکند.


ارسال نظر
  • نام (اختیاری ) :
  • پست الکترونیک :
  • توضیحات :

مطالب مرتبط