mirror of
https://github.com/Manoj-HV30/ds-lab-codes.git
synced 2026-05-16 19:35:22 +00:00
rest of the codes
This commit is contained in:
+60
@@ -0,0 +1,60 @@
|
||||
#include <stdio.h>
|
||||
|
||||
// Function to merge two halves
|
||||
void merge(int a[], int left, int mid, int right) {
|
||||
int i = left, j = mid + 1, k = 0;
|
||||
int temp[right - left + 1];
|
||||
|
||||
// Merge elements into temp[]
|
||||
while (i <= mid && j <= right) {
|
||||
if (a[i] <= a[j])
|
||||
temp[k++] = a[i++];
|
||||
else
|
||||
temp[k++] = a[j++];
|
||||
}
|
||||
|
||||
// Copy remaining elements from left half
|
||||
while (i <= mid)
|
||||
temp[k++] = a[i++];
|
||||
|
||||
// Copy remaining elements from right half
|
||||
while (j <= right)
|
||||
temp[k++] = a[j++];
|
||||
|
||||
// Copy temp[] back to original array
|
||||
for (i = left, k = 0; i <= right; i++, k++)
|
||||
a[i] = temp[k];
|
||||
}
|
||||
|
||||
// Recursive merge sort
|
||||
void mergeSort(int a[], int left, int right) {
|
||||
if (left < right) {
|
||||
int mid = (left + right) / 2;
|
||||
|
||||
mergeSort(a, left, mid);
|
||||
mergeSort(a, mid + 1, right);
|
||||
|
||||
merge(a, left, mid, right);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
int n, i;
|
||||
|
||||
printf("Enter number of elements: ");
|
||||
scanf("%d", &n);
|
||||
|
||||
int a[n];
|
||||
printf("Enter %d integers:\n", n);
|
||||
for (i = 0; i < n; i++)
|
||||
scanf("%d", &a[i]);
|
||||
|
||||
mergeSort(a, 0, n - 1);
|
||||
|
||||
printf("Sorted list (Ascending Order):\n");
|
||||
for (i = 0; i < n; i++)
|
||||
printf("%d ", a[i]);
|
||||
|
||||
printf("\n");
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user