تخطَّ إلى المحتوى

شرح Java

الترتيب والبحث في Java

الدرس 28 من 42· ⏱ 2 دقائق قراءة

يفحص كل عنصر واحدًا واحدًا — أبسط أنواع البحث:

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

int[] nums = {10, 25, 30, 45, 60};
System.out.println(linearSearch(nums, 30)); // 2

التعقيد: O(n) — يتناسب مع حجم المصفوفة.

أسرع بكثير لكن يتطلب مصفوفة مرتّبة مسبقًا — يقصّف النصف في كل مرة:

import java.util.Arrays;

int[] nums = {10, 25, 30, 45, 60};
int index = Arrays.binarySearch(nums, 45);
System.out.println(index); // 3

التعقيد: O(log n).

Bubble Sort

تقارن العنصرين المتجاورين وتبادلهما إن كانا بالعكس، وتكرّر حتى لا يوجد تبديل:

static void bubbleSort(int[] arr) {
  int n = arr.length;
  for (int i = 0; i < n - 1; i++) {
    boolean swapped = false;
    for (int j = 0; j < n - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        int temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
        swapped = true;
      }
    }
    if (!swapped) break;
  }
}

Selection Sort

تبحث عن أصغر عنصر وتضعه بمكانه الصحيح:

static void selectionSort(int[] arr) {
  int n = arr.length;
  for (int i = 0; i < n - 1; i++) {
    int minIdx = i;
    for (int j = i + 1; j < n; j++) {
      if (arr[j] < arr[minIdx]) minIdx = j;
    }
    int temp = arr[i];
    arr[i] = arr[minIdx];
    arr[minIdx] = temp;
  }
}

الطريقة العملية: Arrays.sort

import java.util.Arrays;

int[] nums = {5, 2, 8, 1, 9};
Arrays.sort(nums);   // ترتيب تصاعدي
System.out.println(Arrays.toString(nums)); // [1, 2, 5, 8, 9]

ترتيب مخصص مع Comparator

import java.util.Arrays;
import java.util.Comparator;

String[] names = {"سارة", "أحمد", "محمد"};
Arrays.sort(names, Comparator.comparingInt(String::length));
System.out.println(Arrays.toString(names)); // [أحمد, سارة, محمد]

ملخص التعقيدات

الخوارزميةالأفضلالأسوأ
بحث خطيO(n)O(n)
بحث ثنائيO(log n)O(log n)
Bubble SortO(n)O(n²)
Selection SortO(n²)O(n²)
Arrays.sortO(n log n)O(n log n)

💡 في الكود العملي، استخدم دائمًا Arrays.sort() أو Collections.sort() — الخوارزميات المدمجة أسرع بكثير ومجربة.

🎯 التالي: التعليقات التوضيحية (Annotations).

شرح الترتيب والبحث في Java — Java بالعربي
الترتيب والبحث في JavaJava بالعربي · The Code Fix

📚 لمزيد من التعمّق في Java، راجِع توثيق Java من Oracle.

هل كان هذا الدرس مفيدًا؟