freeCodeCamp/guide/arabic/miscellaneous/freecodecamp-algorithm-inse.../index.md

4.3 KiB

title localeTitle
Freecodecamp Algorithm Insertion Sort Guide Freecodecamp خوارزمية الإدراج دليل فرز

فرز الإدراج هو فرز يستند إلى المقارنة . تستند خوارزمية الفرز إلى المقارنة ، إذا كانت تستخدم عوامل المقارنة (مثل less than و greated than ) للعثور على الترتيب بين رقمين.

في تقنية الفرز هذه ، نحافظ دائمًا على قائمة فرعية تم فرزها في موضع أدنى من القائمة ، ثم نأخذ عنصرًا واحدًا من بقية القائمة ثم ندخله في المكان الصحيح. نحن نفعل ذلك حتى يتم إدراج جميع العناصر في القائمة الفرعية. على سبيل المثال ، أثناء لعب الورق نقوم بتصنيف البطاقات في يدنا. بدءا من اليسار والانتقال إلى اليمين ، نواصل إدخال البطاقة في المكان المناسب حتى النهاية.

مثال

ترتيب بالإدراج

في المثال أعلاه ، يتم دائمًا فرز القائمة الفرعية grey shaded . يرجى ملاحظة أنه في البداية ، تحتوي القائمة الفرعية على عنصر واحد ، ويتم فرزها بشكل بسيط . ثم في كل خطوة نقوم بإدخال العنصر الموجود في أقصى اليسار من القائمة الفرعية white shaded في الموضع الصحيح.

ومن ثم ، قمنا بفرز القائمة الكاملة بهذه الطريقة.

خوارزمية

`Loop for i=0 to N-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 */ 

while (j >= 0 && arr[j] > key) { arr[j+1] = arr[j]; j = j-1; } arr[j+1] = key; // place element key at its correct place } }

int main() { // array to be sorted int arr[5] = {12, 11, 13, 5, 6};

// call the insertion sort 

insertionSort(arr, 5);

// prints sorted array ie 5 6 11 12 13
for(int i=0; i<5; i++)
std::cout << arr[i] << " ";
return 0;
}
`

rocket: [Run Code ## Python Implementation

`# Function to perform insertion sort def insertionSort(arr): # Traverse through array for i in range(1, len(arr)): key = arri] # Move elements of arr[0..i-1], that are greater than key, # to one position ahead of their current position j = i-1 while j>=0 and key < arr[j] : arr[j+1] = arr[j] j -= 1 arr[j+1] = key # place element key at its correct place

array to be sorted

arr = [12, 11, 13, 5, 6]

call the insertion sort

insertionSort(arr)

prints sorted array ie 5 6 11 12 13

for i in range(len(arr)): print(arr[i],end = ' ') `

:rocket: تشغيل الكود

مزايا

  1. كفاءة لمجموعة صغيرة من البيانات ومجموعة البيانات التي تم فرزها تقريبًا.
  2. ببساطة تنفيذها.
  3. في الغالب أفضل من نوع فقاعة وفرز الاختيار وتستخدم عموما مع نوع الدمج.

سلبيات

  1. إنها أقل كفاءة على مجموعة كبيرة من البيانات من دمج الفرز ، وفرز الكومة ، والفرز السريع.