DAA Practial
DAA Practial
return 0;
}
3. Implement Binary Search using recursive approach. Also write its
algorithm and sample output.
Code:-
int binary_search(int arr[], int low, int high, int key) {
if (low > high) {
return -1; // Element not found
}
if (arr[mid] == key) {
return mid; // Element found at mid index
} else if (arr[mid] > key) {
return binary_search(arr, low, mid - 1, key); // Search le half
} else {
return binary_search(arr, mid + 1, high, key); // Search right half
}
}
int main() {
int arr[] = {2, 3, 4, 10, 40};
int key = 10;
int result = binary_search(arr, 0, sizeof(arr) / sizeof(arr[0]) - 1, key);
if (result == -1) {
prin ("Element is not present in array\n");
} else {
prin ("Element is present at index %d\n", result);
}
return 0;
}
4. Implement Merge Sort using recursive approach. Also write its algorithm
and sample output.
Code:-
void merge(int arr[], int le , int mid, int right) {
int n1 = mid - le + 1;
int n2 = right - mid;
int le Arr[n1], rightArr[n2];
for (int i = 0; i < n1; i++)
le Arr[i] = arr[le + i];
for (int j = 0; j < n2; j++)
rightArr[j] = arr[mid + 1 + j];
int i = 0, j = 0, k = le ;
while (i < n1 && j < n2) {
if (le Arr[i] <= rightArr[j])
arr[k++] = le Arr[i++];
else
arr[k++] = rightArr[j++];
}
while (i < n1)
arr[k++] = le Arr[i++];
while (j < n2)
arr[k++] = rightArr[j++];
}
void mergeSort(int arr[], int le , int right) {
if (le < right) {
int mid = le + (right - le ) / 2;
mergeSort(arr, le , mid);
mergeSort(arr, mid + 1, right);
merge(arr, le , mid, right);
}
}
int main() {
int arr[] = {6, 5, 3, 1, 8, 7, 2, 4};
int n = sizeof(arr) / sizeof(arr[0]);
mergeSort(arr, 0, n - 1);
prin ("Sorted array: ");
for (int i = 0; i < n; i++)
prin ("%d ", arr[i]);
prin ("\n");
return 0;
}
5. Implement Merge Sort using recursive approach. Also write its algorithm
and sample output.
Code:-
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int par on(int arr[], int low, int high) {
int pivot = arr[high];
int i = (low - 1); // index of smaller element
for (int j = low; j <= high - 1; j++) {
if (arr[j] <= pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pi = par on(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
void printArray(int arr[], int n) {
prin ("Sorted array: \n");
for (int i = 0; i < n; ++i) {
prin ("%d ", arr[i]);
}
prin ("\n");
}
int main() {
int arr[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr) / sizeof(arr[0]);
prin ("Unsorted array: \n");
for (int i = 0; i < n; ++i) {
prin ("%d ", arr[i]);
}
prin ("\n");
quickSort(arr, 0, n - 1);
printArray(arr, n);
return 0;
}