آشنایی با نحوه ی سورت کردن مقادیر آرایه ها در زبان جاوا

سیده آمین ارمان

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2016/05/10
ارسالی ها
1,730
امتیاز واکنش
20,744
امتیاز
795
محل سکونت
البرز
در این آموزش قصد داریم تا نحوه ی Sort کردن یا مرتب کردن عناصر تشکیل دهنده یک آرایه مورد بررسی قرار دهیم (برای این منظور نیاز است تا حتماً جلسات مربوط به آرایه ها و همچنین حلقه ها به خوبی درک شده باشند.)

به منظور درک بهتر فایده مرتب کردن در برنامه نویسی موقعیتی را در نظر خواهیم گرفت که ممکن است در دنیای واقع اتفاق افتد. فرض کنیم که در تیم تهیه فیلم سینمایی جدایی نادر از سیمین به عنوان مدیر آی تی مشغول به کار بودیم. کار فیلم برداری و مونتاژ به پایان رسیده و همکاران ما مشغول تهیه تیتراژ پایانی هستند. در واقع همکاران ما بر اساس روالی که در تیتراژ پایانی معمول است، می خواهند تا اسامی بازیگران فیلم را به ترتیب حروف الفبا بنویسند. برای این منظور از ما -که یک برنامه نویس هستیم- کمک می خواهند.

برای این کار یک پروژه جدید تعریف می کنیم تحت عنوان A Nader Simin Seperation به معنی "جدایی نادر از سیمین" و همچنین کلاسی به اسم AlphabeticOrder به معنی "ترتیب الفبا" در آن ایجاد می کنیم. از آن جا که اسامی بازیگران به داده هایی از جنس استرینگ در زبان برنامه نویسی جاوا تبدیل خواهند شد، پس نیاز داریم تا یک آرایه از جنس کلاس String ایجاد کنیم. از آنجا که این فیلم شش بازیگر اصلی داشت، در آرایه ای که ایجاد می کنیم عدد شش را نیز وارد می کنیم: کد ما به شکل زیر خواهد بود:

public class AlphabeticOrder {
public static void main(String[] args) {
String[] castNames = new String[6];
}
}
همان طور که در کد فوق ملاحظه می شود نام این آرایه را castNames به معنی "نام بازیگران" گذاشته ایم. اکنون تک تک بازیگران به را هر ترتیبی که بخواهیم داخل آرایه ی خود تعریف می کنیم که سورس کد ما به شکل زیر تکمیل خواهد شد:

public class AlphabeticOrder {
public static void main(String[] args) {
String[] castNames = new String[6];
castNames[0] = "Zareyee Merila";
castNames[1] = "Hosseini Shahab";
castNames[2] = "Bayat Sareh";
castNames[3] = "Peyman Moadi";
castNames[4] = "Hatami Leila";
castNames[5] = "Farhadi Sarina";
}
}
همانطور که در کد فوق ملاحظه می شود اول نام خانوادگی بازیگران سپس نام آن ها وارد شده است چرا که می خواهیم در این مثال بر اساس نام خانوادگی اسامی بازیگران را Sort یا مرتب نماییم. در این مرحله از برنامه نویسی نیاز به یک حلقه ای از جنس for داریم تا در هر بار لوپ شدن یک عدد به لیست اضافه شده و سپس اسامی بازیگران البته بر اساس حروف الفبا یکی پس از دیگر نمایش داده شوند. از این رو، یک حقله از جنس for تعریف می کنیم و مقادیر آن را به شکل زیر تعریف می کنیم:

public class AlphabeticOrder {
public static void main(String[] args) {
String[] castNames = new String[6];
castNames[0] = "Zareyee Merila";
castNames[1] = "Hosseini Shahab";
castNames[2] = "Bayat Sareh";
castNames[3] = "Peyman Moadi";
castNames[4] = "Hatami Leila";
castNames[5] = "Farhadi Sarina";
for (int number = 0; number < 6; number++) {
}
}
}
در این حلقه نقطه ی شروع را عدد صفر در نظر می گیریم و نقطه پایان را عدد شش و در هر بار لوپ شدن، یک واحد به عدد پیشین اضافه خواهد شد. حال می خواهیم تا خروجی برنامه را در پنچره ی کنسول به نمایش در آوریم، از این رو کد فوق را به شکل زیر تکمیل می کنیم:

public class AlphabeticOrder {
public static void main(String[] args) {
String[] castNames = new String[6];
castNames[0] = "Zareyee Merila";
castNames[1] = "Hosseini Shahab";
castNames[2] = "Bayat Sareh";
castNames[3] = "Peyman Moadi";
castNames[4] = "Hatami Leila";
castNames[5] = "Farhadi Sarina";
for (int number = 0; number < 6; number++) {
System.out.print(number + ": " + castNames[number] + "\n");
}
}
}
در دستور ;()System.out.println با نوشتن واژه ی number این دستور را به کامپیوتر می دهیم که عدد حلقه که از صفر آغاز شده و در هر بار لوپ شدن یک عدد به آن اضافه می شود، نمایش داده شود که این به منزله شماره ردیف خواهد بود. پس از آن یک علامت : به همراه یک Space قرار می دهیم سپس نام آرایه ی خود که castNames است را می نویسیم که در هر بار لوپ شدن یکی از عناصر آرایه ی برنامه ی ما نیز به نمایش در آید.

نکته ای که در اینجا می بایست مد نظر قرار داده شود این است که مقابل نام castNames که نام آرایه است می بایست در داخل علامت های [ ] شماره ی عنصری که از آرایه که می خواهیم به نمایش در آید را نیز بنویسیم. به طور مثال اگر بخواهیم که نام شهاب حسینی به نمایش در آید می توانیم [castNames[1 را فرا بخواهیم. سپس یک علامت n\ قرار داده تا در هر بار لوپ شدن، نوشتن کلمات به خط بعد انتقال یابد.

اما از آنجا که می خواهیم به همان ترتیبی که حلقه اجرا می شود عناصر داخل آرایه نیز نمایش داده شوند، از اینرو به جای وارد کردن یک عدد نام حلقه را که number می باشد را وارد می کنیم. به عبارت دیگر در لوپ اول که لوپ صفر است، اولین عنصر که مریلا زارعی است نمایش داده شده که جایگاه آن هم صفر است و در لوپ دوم که جایگاه آن یک است شهاب حسینی نمایش داده شده که جایگاه آن یک است و الی آخر. حال برنامه خود را اجرا می کنیم:

a37c44f81b31daa8ac56d13cb27b9b51.jpg


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

import java.util.Arrays;
public class AlphabeticOrder {
public static void main(String[] args) {
String[] castNames = new String[6];
castNames[0] = "Zareyee Merila";
castNames[1] = "Hosseini Shahab";
castNames[2] = "Bayat Sareh";
castNames[3] = "Peyman Moadi";
castNames[4] = "Hatami Leila";
castNames[5] = "Farhadi Sarina";
Arrays.sort(castNames);
for (int number = 0; number < 6; number++) {
System.out.print(number + ": " + castNames[number] + "\n");
}
}
}
در کد بالا که ویرایش شده است، پیش از شروع حلقه ی for کلاسی تحت عنوان Arrays را به برنامه فرا خوانده ایم و پس از آن یک متد تحت عنوان ()sort را نوشته ایم. در این مرحله از آنجا که ما قصد داریم تا یک کلاس ایجاد شده در API زبان برنامه نویسی جاوا را فرا بخوانیم، پس نیاز است تا این کلاس را به برنامه خود Import کنیم. برای این کار، همان طور که در آموزش های پیشین توضیح داده شد یا عبارت ;import java.util.Arrays را به صورت دستی وارد می کنیم و یا نشانگر موس خود را روی خط چین دور واژه ی Arrays نگه داشته سپس گزینه Import را می زنیم و یا کلید های Ctrl و Shift و O را به صورت هم زمان می فشاریم و عملیات import کلاس Arrays صورت خواهد پذیرفت.

اکنون برای آن که به این متد دستور دهیم که چه چیزی را sort کند داخل پرانتز، نام آرایه ی خود را می نویسیم. از این پس، پیش از آن که برنامه وارد لوپ شود، این متد اجرا شده، اسامی به ترتیب حروف الفبا در خواهند آمد سپس برنامه وارد لوپ خواهد شد. مجدد برنامه را اجرا کرده و خروجی برنامه به شکل زیر خواهد بود:

368fe4ce02e3c91b9be0ee996a7f51b6.jpg


همان طور که ملاحظه می شود، نام های خانوادگی بر اساس حروف الفبا مرتب شده اند (در این لیست چیزی که تا حدودی غیر طبیعی است این است که ردیف خانم ساره بیات ردیف صفر است و این در حالی است که در هیچ تیتراژ پایانی فیلمی اولین جایگاه به صفر اختصاص داده نمی شود و اسامی از جایگاه یک شروع می شوند!)

نکته
در حقیقت در زبان برنامه نویسی جاوا عملکرد متد sort به این شکل است که در مورد حروف الفبا آن ها را از A تا Z مرتب می کند و در مورد اعداد هم آن ها را به صورت صعودی مرتب می کند نه نزولی!
در آموزش بعد، با نحوه جمع کردن Element های یک آرایه با یکدیگر آشنا خواهیم شد.
 

برخی موضوعات مشابه

بالا