localeTitle: Freecodecamp خوارزمية الإدراج دليل فرز
---
فرز الإدراج هو [فرز يستند إلى _المقارنة_](https://en.wikipedia.org/wiki/Comparison_sort) . تستند خوارزمية الفرز إلى المقارنة ، إذا كانت تستخدم عوامل المقارنة (مثل `less than` و `greated than` ) للعثور على الترتيب بين رقمين.
في تقنية الفرز هذه ، نحافظ دائمًا على قائمة فرعية تم فرزها في موضع أدنى من القائمة ، ثم نأخذ عنصرًا واحدًا من بقية القائمة ثم ندخله في المكان الصحيح. نحن نفعل ذلك حتى يتم إدراج جميع العناصر في القائمة الفرعية. على سبيل المثال ، أثناء لعب الورق نقوم بتصنيف البطاقات في يدنا. بدءا من اليسار والانتقال إلى اليمين ، نواصل إدخال البطاقة في المكان المناسب حتى النهاية.
في المثال أعلاه ، يتم دائمًا فرز القائمة الفرعية `grey shaded` . يرجى ملاحظة أنه في البداية ، تحتوي القائمة الفرعية على عنصر واحد ، ويتم فرزها بشكل _بسيط_ . ثم في كل خطوة نقوم بإدخال العنصر الموجود في أقصى اليسار من القائمة الفرعية `white shaded` في الموضع الصحيح.
ومن ثم ، قمنا بفرز القائمة الكاملة بهذه الطريقة.
## خوارزمية
`Loop for i=0 to N-1:
* Pick element array<ahref='https://repl.it/CWZq'target='_blank'rel='nofollow'>i] and insert it into sorted sublist array[0...i-1]
`
## تعقيد
`Space complexity: O(1) // Auxillary/temporary space is used.
Time complexity: O(n*n) // Two nested for loops are used.
`
## تنفيذ C ++
`// Function to sort an array using insertion sort
void insertionSort(int arr[], int n)
{
int i, key, j;
for (i = 1; i <n;i++)
{
key = arr[i];
j = i-1;
/* Move elements of arr[0..i-1], that are greater than key,
to one position ahead of their current position */