مرتب سازی انتخابی (Selection Sort) در جاوا
سلام دوستان در این سری از آموزش برنامه نویسی جاوا به آموزش مرتب سازی انتخابی (Selection Sort) در جاوا می پردازیم از الگوریتم های مختلفی به منظور مرتب سازی (Sort) آرایه می توان مورد استفاده قرار داد شاید بپرسید چرا باید از روش های مختلفی به منظور مرتب سازی استفاده کرد در ادامه این مورد نیز مورد بررسی قرار می گیرد.
الگوریتم مرتب سازی انتخابی (Selection Sort)
مرتبسازی انتخابی یکی از انواع الگوریتم مرتبسازی میباشد که جزو دستهٔ الگوریتمهای مرتبسازی مبتنی بر مقایسهاست که به همین دلیل اعمال آن روی مجموعهٔ بزرگی از اعداد کارا به نظر نمی رسدو بهطور عمومی ضعیفتر از نوع مشابهش که مرتبساز درجی است عمل میکند. این مرتبسازی به دلیل سادگی اش قابل توجهاست.
البته باید در نظر بگیرید بدترین حالت مرتب سازی این الگوریتم به تعداد خانه های آرایه جابه جای وجود دارد و در بهترین حالت یک جابه جای وجود دارد.
در ادامه با استفاده از یک شکل می توانید نحوه مرتب سازی در این الگوریتم را مشاهده کنید.
در ادامه یک مثال ساده از مرتب سازی انتخابی (Selection Sort) را برای شما قرار می دهیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import java.util.Arrays; /** * Created by Programchi. */ public class SelectionSort { public static int[] doSelectionSort(int[] arr){ for (int i = 0; i < arr.length - 1; i++) { int index = i; for (int j = i + 1; j < arr.length; j++) if (arr[j] < arr[index]) index = j; int smallerNumber = arr[index]; arr[index] = arr[i]; arr[i] = smallerNumber; } return arr; } public static void main(String a[]){ int[] list = {4,3,2,5,9,6,3,21,42,4,3,6}; System.out.println("Before Selection sort\n"); System.out.println(Arrays.toString(list)); list = doSelectionSort(list); System.out.println("\nAfter Selection sort"); System.out.println(Arrays.toString(list)); } } |
در بالا یک کلاس به نام doSelectionSort ایجاد شده است که ورودی آن یک آرایه است پس از دریافت آن را براساس Selection یا مرتب سازی انتخابی آن را مرتب می کند.
در نهایت خروجی کد بالا همانند زیر خواهد بود.
1 2 3 4 5 6 7 | /** * Output Before Selection sort [4, 3, 2, 5, 9, 6, 3, 21, 42, 4, 3, 6] After Selection sort [2, 3, 3, 3, 4, 4, 5, 6, 6, 9, 21, 42] */ |