Merge Final
Merge Final
1
Merge sort
على أنه خوارزمية فرز تعمل عن طريق تقسيم مصفوفة إلى مصفوفات فرعية أصغرMerge sortingيتم تعريف
ثم دمج المصفوفات الفرعية التي تم فرزها معا لتشكيل المصفوفة النهائية الذي تم، وفرز كل مصفوفة فرعية،
.فرزها
;*.import java.io
{ class MergeSort
;int n1 = m - l + 1
;int n2 = r - m
;L[i] = arr[l + i]
;R[j] = arr[m + 1 + j]
;int i = 0, j = 0
;int k = l
;arr[k] = L[i]
;++i
2
}
{ else
;arr[k] = R[j]
;++j
;++k
;arr[k] = L[i]
;++i
;++k
;arr[k] = R[j]
;++j
;++k
)(merge //
{ if (l < r)
;int m = l + (r - l) / 2
;sort(arr, l, m)
;sort(arr, m + 1, r)
;merge(arr, l, m, r)
;int n = arr.length
3
)for (int i = 0; i < n; ++i
;)(System.out.println
}
{
);printArray(arr
);printArray(arr
}}
التعقيد الزمني ل Merge Sortهو () )Nlog (Nفي جميع الحاالت ( 3األسوأ والمتوسط واألفضل) حيث يقسم Merge Sort
دائما مصفوفة إلى نصفين ويستغرق وقتا خطيا لدمج نصفين.
مساحة مساعدة ، O (n) :في فرز الدمج ،يتم نسخ جميع العناصر في مصفوفة مساعدة .لذلك مطلوب مساحة إضافية N
ل.Merge sorting
Counting sort
هو أسلوب فرز يعتمد على المفاتيح( القيم الفريدة التي يمكن أن تأخذها العناصر المراد ترتيبها ) بين نطاق
معين .وهو يعمل عن طريق حساب عدد الكائنات التي لها قيم رئيسية مميزة (نوع من التجزئة) .ثم قم ببعض
العمليات الحسابية لحساب موضع كل كائن في تسلسل اإلخراج.
.لنفترض أّن لدينا المدخالت التالية وهي ضمن النطاق 1إلى 9
1, 4, 1, 2, 7, 5, 2
ننشئ مصفوفة لتخزين عدد المرات التي يتكرر فيها كل عنصر فريد )1
تعديل مصفوفة العد بطريقة تجعل كل موقع يخّزن مجموع المعدودات السابقة )2
4
Index: 0 1 2 3 4 5 6 7 8 9
Count: 0 2 4 4 5 6 6 7 7 7
import java.io.*;
class CountingSort {
void sort(char arr[])
{
int n = arr.length;
// Driver code
public static void main(String args[])
{
CountingSort ob = new CountingSort();
char arr[] = { 'g', 'e', 'e', 'k', 's', 'f', 'o',
'r', 'g', 'e', 'e', 'k', 's' };
// Function call
ob.sort(arr);
5
Sorted character array is eeeefggkkorss
time complexity
. هو نطاق اإلدخالK هو عدد العناصر في مصفوفة اإلدخال وN حيثO (N + K) :
O (N + K) :المساحة اإلضافية
class GFG {
// Driver code
public static void main(String[] args)
{
int[] arr = { -5, -10, 0, -3, 8, 5, -1, 10 };
// Function call
countSort(arr);
printArray(arr);
6
}}
الناتج
10 8 5 0 1- 3- 5- 10-
time complexityتعقيد الوقت ، O (N) :حيث Nهو العدد اإلجمالي للعناصر
المساحة المساعدةO (N) :
Qucik sort
QuickSortهي خوارزمية فرز تعتمد على خوارزمية Divide and Conquerالتي تختار عنصرا
كمحور وتقسم المصفوفة المحددة حول المحور المختار عن طريق وضع المحور في موضعه
الصحيح في المصفوفة التي تم فرزها.
{ class GFG
7
}
8
}
// Driver Code
public static void main(String[] args)
{
int[] arr = { 10, 7, 8, 9, 1, 5 };
int N = arr.length;
// Function call
quickSort(arr, 0, N - 1);
System.out.println("Sorted array:");
printArr(arr);
}
}
Output
Sorted array:
1 5 7 8 9 10
:تحليل الفرز السريع
. على النحو التالي، بشكل عام، QuickSort يمكن كتابة الوقت الذي يستغرقه
T(n) = T(k) + T(n-k-1) + (n)
wikipedia.org
geeksforgeeks.org
wiki.hsoub.com