( من أنواع الفرز لحقول البيانات )

( من أنواع الفرز لحقول البيانات )

أنواع الفرز لحقول البيانات

( من أنواع الفرز لحقول البيانات )

مقدمة

( من أنواع الفرز لحقول البيانات )

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

فرز الفقاعات

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

( من أنواع الفرز لحقول البيانات )

مزايا فرز الفقاعات تشمل سهولة تنفيذه وكفاءته العالية للمصفوفات الصغيرة. ومع ذلك، فهو غير فعال للمصفوفات الكبيرة.

مثال:

( من أنواع الفرز لحقول البيانات )

def bubble_sort(arr):
    n = len(arr)    
    swapped = True
    while swapped:
        swapped = False
        for i in range(1, n):
            if arr[i-1] > arr[i]:
                arr[i-1], arr[i] = arr[i], arr[i-1]
                swapped = True

فرز الإدراج

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

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

مثال:

( من أنواع الفرز لحقول البيانات )

def insertion_sort(arr):
    n = len(arr)
    for i in range(1, n):
        key = arr[i]
        j = i-1
        while j >= 0 and key < arr[j] :
            arr[j+1] = arr[j]
            j -= 1
        arr[j+1] = key

فرز الانتقاء

فرز الانتقاء هو خوارزمية فرز تعمل من خلال تكرار تحديد أصغر (أو أكبر) عنصر غير مرتب في المصفوفة وإضافته إلى المصفوفة المرتبة.

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

مثال:

def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        min_idx = i
        for j in range(i+1, n):
            if arr[j] < arr[min_idx]:
                min_idx = j
        arr[i], arr[min_idx] = arr[min_idx], arr[i]

فرز الدمج

فرز الدمج هو خوارزمية فرز فعالة تعمل عن طريق تقسيم المصفوفة إلى نصفين متكررين ودمجهما معًا بطريقة مرتبة.

مزايا فرز الدمج تشمل كفاءته العالية للمصفوفات الكبيرة، وقدرته على فرز البيانات غير المتجانسة. ومع ذلك، فهو أكثر تعقيدًا في التنفيذ من أنواع الفرز الأخرى.

مثال:

def merge_sort(arr):
    if len(arr) > 1:
        mid = len(arr)//2
        L = arr[:mid]
        R = arr[mid:]
        merge_sort(L)
        merge_sort(R)
        merge(arr, L, R)

فرز الاستطراد السريع

( من أنواع الفرز لحقول البيانات )

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

مزايا فرز الاستطراد السريع تشمل كفاءته العالية للمصفوفات الكبيرة، وقدرته على فرز المصفوفات غير المتجانسة. ومع ذلك، قد يؤدي اختيار محور سيء إلى أداء غير فعال.

مثال:

def quick_sort(arr, low, high):
    if low < high:
        pi = partition(arr, low, high)
        quick_sort(arr, low, pi-1)
        quick_sort(arr, pi+1, high)

فرز الصناديق

فرز الصناديق هو خوارزمية فرز تعمل عن طريق تقسيم المصفوفة إلى عدة “صناديق”، كل صندوق مخصص لنطاق من القيم.

مزايا فرز الصناديق تشمل كفاءته العالية للمصفوفات الكبيرة التي تحتوي على نطاق ضيق من القيم. ومع ذلك، قد يؤدي اختيار عدد الصناديق غير المناسب إلى أداء غير فعال.

مثال:

( من أنواع الفرز لحقول البيانات )

def bucket_sort(arr):
    max_value = max(arr)
    min_value = min(arr)
    bucket_size = (max_value - min_value) / num_buckets
    buckets = [[] for _ in range(num_buckets)]
    for i in range(len(arr)):
        bucket_index = int((arr[i] - min_value) / bucket_size)
        buckets[bucket_index].append(arr[i])
    for bucket in buckets:
        bucket.sort()
    k = 0
    for bucket in buckets:
        for value in bucket:
            arr[k] = value
            k += 1

فرز كوم الهيب

فرز كوم الهيب هو خوارزمية فرز فعالة تستخدم بنية بيانات كوم الهيب لإنشاء مصفوفة مرتبة.

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

مثال:

def heap_sort(arr):
    n = len(arr)
    for i in range(n//2 - 1, -1, -1):
        heapify(arr, n, i)
    for i in range(n-1, 0, -1):
        arr[i], arr[0] = arr[0], arr[i]
        heapify(arr, i, 0)

استنتاج

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *