مرتب کردن آرایه ها توسط کلاس Array
یکی از نیازهایی که در بیشتر موارد در هنگام برنامه نویسی به آن نیاز خواهیم داشت مرتب کردن داده های مختلف می باشد . به طور مثال چاپ نمرات یک دانشجو به صورت صعودی و یا برای پیدا کردن مقاله ای که بیشترین بازید را داشته و یا بیشترین کالای فروخته شده و… می توان رکورد های مورد نظر را مرتب کرده و رکورد مورد نظر خود را بر اساس بیشترین مقدار و یا بلعکس دریافت کنیم .
در این مقاله مرتب کردن داده هایی از نوع های int,string و مرتب کردن بر اساس یک فیلد یک کلاس بررسی خواهد شد .
برای مرتب کردن در این مقاله از متد Sort از کلاس Array استفاده میکنیم ، شکل کلی آن به صورت زیر خواهد بود :
1 |
Array.sorty(Array); |
توجه داشته باشید که نمی توان از کلاس فوق شی ایجاد کرد .در صورت ساخت شی از کلاس Array با خطای زیر روبه رو خواهید شد :
1 |
Cannot create an instance of the abstract class or interface 'System.Array |
مرتب کردن داده هایی از نوع int :
در ابتدا مانند زیر آرایه ای از انواع اعداد صحیح به صورت نا مرتب می نویسیم :
1 |
int[] intArray = new int[] {8,5, 2,3,4,1,15}; |
برای مرتب کردن به صورت زیر عمل می کنیم :
1 2 3 4 5 6 7 8 9 |
//Sort Array.Sort(intArray); // write array foreach (int item in intArray) {MessageBox.Show(item.ToString());} |
مرتب کردن نوع string :
در ابتدا آرایه ای نامرتب از رشته ها را به صورت زیر می نویسیم :
1 |
string[] StringArray = new string[] { "o", "ali", "reza", "bahram" }; |
و برای مرتب کردن به صورت زیر عمل می کنیم .
1 2 3 4 5 6 7 8 9 |
//Sort Array.Sort(StringArray); // write aarry foreach (string item in StringArray) { MessageBox.Show(item);} |
مرتب کردن داده هایی با نوع سفارشی توسط delegate :
در زیر کلاسی را تعریف کرده ایم با دو فیلد name,age که قصد داریم بر اساس یکی از فیلد های آن مرتب کنیم .
1 2 3 4 5 6 7 8 9 |
public class User { public int Age { get; set; } public string Name { get; set; } } |
از کلاس فوق آرایه ای با داده های متفاوت تشکیل می دهیم :
1 2 3 4 5 6 7 |
User[] Users = new User[] { new User{Age=12, Name="amin"}, new User{Age=10, Name="yasin"} }; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// 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); } |
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.