انضمام ترتیب الگورتھم کا تعارف۔

انضمام ترتیب الگورتھم کا تعارف۔

ضم کریں ترتیب ایک الگ الگورتھم ہے جو 'تقسیم اور فتح' کی تکنیک پر مبنی ہے۔ یہ سب سے زیادہ موثر چھانٹنے کے الگورتھم میں سے ایک ہے۔





محفوظ موڈ میں آؤٹ لک کیسے کھولیں

اس آرٹیکل میں ، آپ انضمام الگورتھم کے کام کے بارے میں سیکھیں گے ، انضمام کی الگورتھم ، اس کا وقت اور جگہ کی پیچیدگی ، اور مختلف پروگرامنگ زبانوں جیسے C ++ ، ازگر اور جاوا اسکرپٹ میں اس کا نفاذ۔





انضمام ترتیب الگورتھم کیسے کام کرتا ہے؟

ضم کریں کام تقسیم اور فتح کے اصول پر کام کرتا ہے۔ ضم کرنے کی ترتیب بار بار ایک صف کو دو برابر سبریریز میں توڑ دیتی ہے یہاں تک کہ ہر سبری ایک ہی عنصر پر مشتمل ہو۔ آخر میں ، ان تمام سبریوں کو اس طرح ضم کیا گیا ہے کہ نتیجے میں صف کو ترتیب دیا گیا ہے۔





اس تصور کو ایک مثال کی مدد سے زیادہ موثر انداز میں سمجھایا جا سکتا ہے۔ مندرجہ ذیل عناصر کے ساتھ غیر ترتیب شدہ صف پر غور کریں: {16 ، 12 ، 15 ، 13 ، 19 ، 17 ، 11 ، 18}۔

یہاں ، انضمام ترتیب الگورتھم سرنی کو دو حصوں میں تقسیم کرتا ہے ، خود کو دو حصوں کے لئے کہتا ہے ، اور پھر دو ترتیب شدہ حصوں کو ضم کرتا ہے۔



ترتیب الگورتھم ضم کریں۔

ذیل میں انضمام کی الگورتھم ہے:

MergeSort(arr[], leftIndex, rightIndex)
if leftIndex >= rightIndex
return
else
Find the middle index that divides the array into two halves:
middleIndex = leftIndex + (rightIndex-leftIndex)/2
Call mergeSort() for the first half:
Call mergeSort(arr, leftIndex, middleIndex)
Call mergeSort() for the second half:
Call mergeSort(arr, middleIndex+1, rightIndex)
Merge the two halves sorted in step 2 and 3:
Call merge(arr, leftIndex, middleIndex, rightIndex)

متعلقہ: تکرار کیا ہے اور آپ اسے کیسے استعمال کرتے ہیں؟





انضمام الگورتھم کی وقت اور جگہ کی پیچیدگی۔

انضمام الگورتھم مندرجہ ذیل تکرار تعلق کی شکل میں ظاہر کیا جا سکتا ہے۔

T (n) = 2T (n / 2) + O (n)





ماسٹر کے نظریہ یا تکرار کے درخت کے طریقہ کار کا استعمال کرتے ہوئے اس تکرار کے رشتے کو حل کرنے کے بعد ، آپ کو حل بطور O (n logn) مل جائے گا۔ اس طرح ، انضمام ترتیب الگورتھم کی وقت پیچیدگی ہے۔ O (n logn) .

انضمام کی بہترین وقت کی پیچیدگی: O (n logn)

انضمام کی اوسط کیس ٹائم پیچیدگی: O (n logn)

انضمام کی بدترین وقت کی پیچیدگی: O (n logn)

متعلقہ: بگ-او نوٹیشن کیا ہے؟

معاون خلائی پیچیدگی۔ انضمام کی الگورتھم ہے۔ O (n) جیسا کہ n انضمام کے نفاذ میں معاون جگہ درکار ہے۔

انضمام ترتیب الگورتھم کا C ++ نفاذ۔

ذیل میں انضمام الگورتھم کا C ++ عمل درآمد ہے:

// C++ implementation of the
// merge sort algorithm
#include
using namespace std;
// This function merges two subarrays of arr[]
// Left subarray: arr[leftIndex..middleIndex]
// Right subarray: arr[middleIndex+1..rightIndex]
void merge(int arr[], int leftIndex, int middleIndex, int rightIndex)
{
int leftSubarraySize = middleIndex - leftIndex + 1;
int rightSubarraySize = rightIndex - middleIndex;
// Create temporary arrays
int L[leftSubarraySize], R[rightSubarraySize];
// Copying data to temporary arrays L[] and R[]
for (int i = 0; i L[i] = arr[leftIndex + i];
for (int j = 0; j R[j] = arr[middleIndex + 1 + j];
// Merge the temporary arrays back into arr[leftIndex..rightIndex]
// Initial index of Left subarray
int i = 0;
// Initial index of Right subarray
int j = 0;
// Initial index of merged subarray
int k = leftIndex;
while (i {
if (L[i] <= R[j])
{
arr[k] = L[i];
i++;
}
else
{
arr[k] = R[j];
j++;
}
k++;
}
// If there're some remaining elements in L[]
// Copy to arr[]
while (i {
arr[k] = L[i];
i++;
k++;
}
// If there're some remaining elements in R[]
// Copy to arr[]
while (j {
arr[k] = R[j];
j++;
k++;
}
}
void mergeSort(int arr[], int leftIndex, int rightIndex)
{
if(leftIndex >= rightIndex)
{
return;
}
int middleIndex = leftIndex + (rightIndex - leftIndex)/2;
mergeSort(arr, leftIndex, middleIndex);
mergeSort(arr, middleIndex+1, rightIndex);
merge(arr, leftIndex, middleIndex, rightIndex);
}

// Function to print the elements
// of the array
void printArray(int arr[], int size)
{
for (int i = 0; i {
cout << arr[i] << ' ';
}
cout << endl;
}
// Driver code
int main()
{
int arr[] = { 16, 12, 15, 13, 19, 17, 11, 18 };
int size = sizeof(arr) / sizeof(arr[0]);
cout << 'Unsorted array:' << endl;
printArray(arr, size);
mergeSort(arr, 0, size - 1);
cout << 'Sorted array:' << endl;
printArray(arr, size);
return 0;
}

آؤٹ پٹ:

Unsorted array:
16 12 15 13 19 17 11 18
Sorted array:
11 12 13 15 16 17 18 19

انضمام ترتیب الگورتھم کا جاوا اسکرپٹ عمل درآمد۔

ذیل میں انضمام الگورتھم کا جاوا اسکرپٹ عمل درآمد ہے:

// JavaScript implementation of the
// merge sort algorithm
// This function merges two subarrays of arr[]
// Left subarray: arr[leftIndex..middleIndex]
// Right subarray: arr[middleIndex+1..rightIndex]
function merge(arr, leftIndex, middleIndex, rightIndex) {
let leftSubarraySize = middleIndex - leftIndex + 1;
let rightSubarraySize = rightIndex - middleIndex;
// Create temporary arrays
var L = new Array(leftSubarraySize);
var R = new Array(rightSubarraySize);
// Copying data to temporary arrays L[] and R[]
for(let i = 0; i L[i] = arr[leftIndex + i];
}
for (let j = 0; j R[j] = arr[middleIndex + 1 + j];
}
// Merge the temporary arrays back into arr[leftIndex..rightIndex]
// Initial index of Left subarray
var i = 0;
// Initial index of Right subarray
var j = 0;
// Initial index of merged subarray
var k = leftIndex;
while (i {
if (L[i] <= R[j])
{
arr[k] = L[i];
i++;
}
else
{
arr[k] = R[j];
j++;
}
k++;
}
// If there're some remaining elements in L[]
// Copy to arr[]
while (i {
arr[k] = L[i];
i++;
k++;
}
// If there're some remaining elements in R[]
// Copy to arr[]
while (j {
arr[k] = R[j];
j++;
k++;
}
}
function mergeSort(arr, leftIndex, rightIndex) {
if(leftIndex >= rightIndex) {
return
}
var middleIndex = leftIndex + parseInt((rightIndex - leftIndex)/2);
mergeSort(arr, leftIndex, middleIndex);
mergeSort(arr, middleIndex+1, rightIndex);
merge(arr, leftIndex, middleIndex, rightIndex);
}
// Function to print the elements
// of the array
function printArray(arr, size) {
for(let i = 0; i document.write(arr[i] + ' ');
}
document.write('
');
}
// Driver code:
var arr = [ 16, 12, 15, 13, 19, 17, 11, 18 ];
var size = arr.length;
document.write('Unsorted array:
');
printArray(arr, size);
mergeSort(arr, 0, size - 1);
document.write('Sorted array:
');
printArray(arr, size);

آؤٹ پٹ:

Unsorted array:
16 12 15 13 19 17 11 18
Sorted array:
11 12 13 15 16 17 18 19

متعلقہ: متحرک پروگرامنگ: مثالیں ، عام مسائل ، اور حل۔

مرج ترتیب الگورتھم کا ازگر عمل درآمد۔

انضمام الگورتھم کا ازگر عمل درآمد ذیل میں ہے:

# Python implementation of the
# merge sort algorithm
def mergeSort(arr):
if len(arr) > 1:
# Finding the middle index of the array
middleIndex = len(arr)//2
# Left half of the array
L = arr[:middleIndex]
# Right half of the array
R = arr[middleIndex:]
# Sorting the first half of the array
mergeSort(L)
# Sorting the second half of the array
mergeSort(R)
# Initial index of Left subarray
i = 0
# Initial index of Right subarray
j = 0
# Initial index of merged subarray
k = 0
# Copy data to temp arrays L[] and R[]
while i if L[i] arr[k] = L[i]
i = i + 1
else:
arr[k] = R[j]
j = j + 1
k = k + 1
# Checking if there're some remaining elements
while i arr[k] = L[i]
i = i + 1
k = k + 1
while j arr[k] = R[j]
j = j + 1
k = k + 1
# Function to print the elements
# of the array
def printArray(arr, size):
for i in range(size):
print(arr[i], end=' ')
print()

# Driver code
arr = [ 16, 12, 15, 13, 19, 17, 11, 18 ]
size = len(arr)
print('Unsorted array:')
printArray(arr, size)
mergeSort(arr)
print('Sorted array:')
printArray(arr, size)

آؤٹ پٹ:

Unsorted array:
16 12 15 13 19 17 11 18
Sorted array:
11 12 13 15 16 17 18 19

دیگر ترتیب دینے کے الگورتھم کو سمجھیں۔

ترتیب دینا پروگرامنگ میں سب سے زیادہ استعمال ہونے والے الگورتھم میں سے ایک ہے۔ آپ مختلف ترتیب دینے والے الگورتھم کا استعمال کرتے ہوئے مختلف پروگرامنگ زبانوں میں عناصر کو ترتیب دے سکتے ہیں جیسے فوری ترتیب ، بلبلا ترتیب ، ضم کرنے کی ترتیب ، اندراج کی ترتیب ، وغیرہ۔

اگر آپ چھانٹنے کے آسان ترین الگورتھم کے بارے میں جاننا چاہتے ہیں تو بلبلا ترتیب بہترین انتخاب ہے۔

بانٹیں بانٹیں ٹویٹ ای میل۔ بلبل ترتیب الگورتھم کا تعارف۔

بلبلہ ترتیب الگورتھم: صفوں کو چھانٹنے کا ایک عمدہ تعارف۔

اگلا پڑھیں۔
متعلقہ موضوعات۔
  • پروگرامنگ۔
  • جاوا اسکرپٹ۔
  • ازگر۔
  • کوڈنگ ٹیوٹوریل
مصنف کے بارے میں یوراج چندر۔(60 مضامین شائع ہوئے)

یوراج دہلی یونیورسٹی ، انڈیا میں کمپیوٹر سائنس کے انڈر گریجویٹ طالب علم ہیں۔ وہ فل اسٹیک ویب ڈویلپمنٹ کے بارے میں پرجوش ہے۔ جب وہ نہیں لکھ رہا ہے ، وہ مختلف ٹیکنالوجیز کی گہرائی کو تلاش کر رہا ہے۔

یوراج چندر سے مزید

ہماری نیوز لیٹر کو سبسکرائب کریں

ٹیک ٹپس ، جائزے ، مفت ای بکس ، اور خصوصی سودوں کے لیے ہمارے نیوز لیٹر میں شامل ہوں!

سبسکرائب کرنے کے لیے یہاں کلک کریں۔