The Code Fix

🧮 شرح هياكل البيانات والخوارزميات

خوارزميات البحث والترتيب

نمرّ على كل عنصر — O(n):

function linearSearch(arr, target) {
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === target) return i;
  }
  return -1;
}

يعمل على مصفوفة مرتّبة — O(log n)، سريع جدًا:

function binarySearch(arr, target) {
  let low = 0, high = arr.length - 1;
  while (low <= high) {
    const mid = Math.floor((low + high) / 2);
    if (arr[mid] === target) return mid;
    if (arr[mid] < target) low = mid + 1;
    else high = mid - 1;
  }
  return -1;
}

💡 يقسّم نطاق البحث للنصف في كل خطوة — لهذا هو فائق السرعة.

الترتيب الفقاعي (Bubble Sort)

بسيط لكن بطيء — O(n²):

function bubbleSort(arr) {
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr.length - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
      }
    }
  }
  return arr;
}

مقارنة خوارزميات الترتيب

الخوارزميةالتعقيد
Bubble SortO(n²)
Quick SortO(n log n)
Merge SortO(n log n)

💡 في الواقع نستخدم arr.sort() المدمجة (مُحسّنة)، لكن فهم الخوارزميات يطوّر تفكيرك ويُسأل عنه في المقابلات.

🎉 أكملت أساسيات هياكل البيانات والخوارزميات! أنت أقرب لاجتياز المقابلات التقنية. اختبر نفسك واحصل على شهادتك.