السلام عليكم
شرح بسيط و سريع اولا لل Insertion Sort هو ترتيب للعناصر تصاعدى او تنازلى
شرط ان يكونوا فى النهاية مرتبين ...سنقوم هنا بعمل الترتيب التصاعدى(من الاصغر للاكبر)
عندما يكون عندنا مجموعة من العناصر غير مرتبة هكذا.....
فعندما نبدأ بالترتيب..نبدأ بالعنصر الثانى اى -5 و سنقوم بمقارنة هذا العنصر بالعنصر الذى يسبقه اى 7
اذا كان العنصر الثانى اقل من العنصر الذى يسبقه نقوم بتبديل الاماكن سنضع العنصر -5 مكان العنصر 7 و العكس
هكذا:::
بعد انتهاء هذه المرحلة نجد اننا كنا وضعنا هذا العنصر فى مكانه الصحيح بالنسبة للعنصر الذى يسبقه(و لاحظ موضعه هذا ليس نهائيا) اى من الممكن ان نجد رقم اقل من -5 و هنا سيحل هذا الرقم محل العنصر -5
ثم ننتقل الى العنصر الثالث و نقارنه بالعنصر الذى يسبقه و اذا تحقق الشرط (ان يكون العنصر اقل من العنصر الذى يسبقه)ننقله و هكذا
اترك الصورة تحكى:::
الكود:::::::::::::
import java.util.Scanner;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Esraa Ahmed
*/
public class Insertion {
public static void insertionSort(int[] array) {
int i,tempValue;
for (int j = 1; j < array.length; j++) {
tempValue = array[j];
i=j;
while (i>0&&array[i-1]>tempValue) {
array = array[i-1];
i--;
}
array = tempValue;
}
for(int x=0;x<array.length;x++){
System.out.print(""+array[x]);
}
}
public static void main(String [] args){
int arr[]=new int[5];
Scanner input=new Scanner(System.in);
for(int i=0;i<5;i++){
arr=input.nextInt();
}
insertionSort(arr);
}
}نقوم فى هذه الخوارزمية بترتيب العناصر عن طريق اثنين loop
نجد اول loop
for (int j = 1; j < array.length; j++)
هذا ال loop خاص بالوقوف على كل عنصر ابتداء من ثانى عنصر و هذا ال loop سيقوم بعمل 5 iterations اى عدد دورانه سيكون نفس عدد العناصر الموجوده فى المصفوفة مطروح منها واحد لاننا نبدأ من عند العنصر الثانى
اما ثانى loop
while (i>0&&array[i-1]>tempValue) {هذا ال loop يقوم بمقارنة العنصر الذى ينتظر الترتيب بما قبله من العناصر و نجد شرطه
ان يكون العنصر اصغر بما قبله
فقط :wub:
ادرس هذه المادة بالسى بلس..و لكنى احب التطبيق بالجافا

