Array Lab Assignment Solutions
Name: Abhinandan Sharma
Batch: 24A18
Roll Number: 241030047
1) Second Largest Element in an Array
#include <stdio.h>
int secondLargest(int arr[], int n) {
int largest = -1, secondLargest = -1;
for (int i = 0; i < n; i++) { if (arr[i]
> largest) { secondLargest =
largest; largest = arr[i];
} else if (arr[i] > secondLargest && arr[i] != largest) {
secondLargest = arr[i];
}
}
return secondLargest;
}
int main() { int arr[] = {12, 35, 1, 10, 34, 1}; int n = sizeof(arr)
/ sizeof(arr[0]); printf("Second Largest Element: %d\n",
secondLargest(arr, n)); return 0;
}
2) Largest Three Distinct Elements in an Array
#include <stdio.h>
void largestThree(int arr[], int n) {
int first = -1, second = -1, third = -1;
for (int i = 0; i < n; i++) { if (arr[i]
> first) {
third = second;
second = first;
first = arr[i];
} else if (arr[i] > second && arr[i] != first) {
third = second; second = arr[i];
} else if (arr[i] > third && arr[i] != first && arr[i] != second) {
third = arr[i];
}
}
printf("Largest Three Distinct Elements: %d, %d, %d\n", first, second, third);
}
int main() { int arr[] = {10, 4, 3,
50, 23, 90}; int n = sizeof(arr) /
sizeof(arr[0]); largestThree(arr,
n); return 0;
}
3) Searching an Element in an Array (Recursive)
#include <stdio.h>
int search(int arr[], int n, int key, int index) {
if (index >= n) return -1; if (arr[index] ==
key) return index; return search(arr, n,
key, index + 1);
}
int main() { int arr[] = {10, 20, 30, 40, 50}; int
n = sizeof(arr) / sizeof(arr[0]); int key = 30;
int result = search(arr, n, key, 0);
printf("Element found at index: %d\n", result);
return 0;
}
4) Binary Search in an Array (Recursive)
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int key) { if (left >
right) return -1; int mid = (left + right) / 2; if (arr[mid] ==
key) return mid; if (arr[mid] > key) return binarySearch(arr,
left, mid - 1, key); return binarySearch(arr, mid + 1, right,
key);
}
int main() { int arr[] = {2, 3, 4, 10, 40}; int n =
sizeof(arr) / sizeof(arr[0]); int key = 10; int
result = binarySearch(arr, 0, n - 1, key);
printf("Element found at index: %d\n", result);
return 0;
}
5) Merge Two Sorted Arrays
#include <stdio.h>
void mergeArrays(int arr1[], int n1, int arr2[], int n2, int merged[]) {
int i = 0, j = 0, k = 0; while (i < n1 && j < n2) { if (arr1[i] <
arr2[j]) merged[k++] = arr1[i++]; else merged[k++] = arr2[j++];
}
while (i < n1) merged[k++] = arr1[i++];
while (j < n2) merged[k++] = arr2[j++];
}
int main() { int arr1[] = {1, 3, 5, 7}; int arr2[] = {2, 4,
6, 8}; int n1 = sizeof(arr1) / sizeof(arr1[0]); int n2 =
sizeof(arr2) / sizeof(arr2[0]); int merged[n1 + n2];
mergeArrays(arr1, n1, arr2, n2, merged); for (int i = 0;
i < n1 + n2; i++) printf("%d ", merged[i]); return 0;
}
6) Rearrange Array Such That Even Positioned Elements Are Greater Than
Odd Positioned Elements
#include <stdio.h>
#include <stdlib.h>
void rearrangeArray(int arr[], int n) {
for (int i = 1; i < n; i += 2) { if
(arr[i] < arr[i - 1]) { int temp =
arr[i]; arr[i] = arr[i - 1];
arr[i - 1] = temp;
}
if (i + 1 < n && arr[i] < arr[i + 1]) {
int temp = arr[i]; arr[i] = arr[i +
1]; arr[i + 1] = temp;
}
}
}
int main() { int arr[] = {10, 20, 30, 40, 50,
60}; int n = sizeof(arr) / sizeof(arr[0]);
rearrangeArray(arr, n); for (int i = 0; i < n;
i++) printf("%d ", arr[i]); return 0;
}
7) Rotate an Array by d (Counterclockwise or Left)
#include <stdio.h>
void rotateLeft(int arr[], int n, int d) { d = d
% n; // To handle if d > n int temp[d]; for
(int i = 0; i < d; i++) temp[i] = arr[i]; for (int
i = 0; i < n - d; i++) arr[i] = arr[i + d];
for (int i = 0; i < d; i++) arr[n - d + i] = temp[i];
}
int main() { int arr[] = {1, 2, 3, 4, 5, 6, 7};
int n = sizeof(arr) / sizeof(arr[0]); int d = 2;
rotateLeft(arr, n, d); for (int i = 0; i < n; i++)
printf("%d ", arr[i]); return 0;
}
8) Merge Sort
#include <stdio.h>
void merge(int arr[], int l, int m, int r) { int
n1 = m - l + 1, n2 = r - m; int L[n1], R[n2];
for (int i = 0; i < n1; i++) L[i] = arr[l + i]; for
(int i = 0; i < n2; i++) R[i] = arr[m + 1 + i]; int
i = 0, j = 0, k = l; while (i < n1 && j < n2) {
if (L[i] <= R[j]) arr[k++] = L[i++]; else
arr[k++] = R[j++];
}
while (i < n1) arr[k++] = L[i++];
while (j < n2) arr[k++] = R[j++];
}
void mergeSort(int arr[], int l, int r) {
if (l < r) { int m = l + (r
- l) / 2; mergeSort(arr, l,
m); mergeSort(arr, m +
1, r); merge(arr, l, m, r);
}
}
int main() { int arr[] = {12, 11, 13,
5, 6, 7}; int n = sizeof(arr) /
sizeof(arr[0]);
mergeSort(arr, 0, n - 1);
for (int i = 0; i < n; i++) printf("%d ", arr[i]);
return 0;
}
9) Mean, Median, Mode in an Integer Array
#include <stdio.h>
#include <math.h>
void meanMedianMode(int arr[], int n) {
int sum = 0, mode = arr[0], maxCount = 0;
for (int i = 0; i < n; i++) sum += arr[i];
// Calculate Mean
double mean = (double)sum / n;
// Calculate Median for
(int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++)
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j]; arr[j]
= temp;
}
double median = n % 2 == 0 ? (arr[n / 2 - 1] + arr[n / 2]) / 2.0 : arr[n / 2];
// Calculate Mode for (int i = 0; i < n; i++) { int
count = 0; for (int j = 0; j < n; j++) if (arr[j] ==
arr[i]) count++; if (count > maxCount) {
maxCount = count; mode = arr[i];
}
}
printf("Mean: %.2f\nMedian: %.2f\nMode: %d\n", mean, median, mode);
}
int main() { int arr[] =
{1, 2, 2, 3, 4};
int n = sizeof(arr) / sizeof(arr[0]);
meanMedianMode(arr, n);
return 0;
}
10) Remove All Occurrences of an Element in an Array
#include <stdio.h>
int removeOccurrences(int arr[], int n, int key) {
int index = 0; for (int i = 0; i < n; i++) if
(arr[i] != key) arr[index++] = arr[i]; return
index;
}
int main() { int arr[] = {1, 2, 3, 4, 5, 3, 3};
int n = sizeof(arr) / sizeof(arr[0]); int key =
3; n = removeOccurrences(arr, n, key);
for (int i = 0; i < n; i++) printf("%d ", arr[i]);
return 0;
}
11) Sort an Array into Wave Form
#include <stdio.h>
void waveSort(int arr[], int n) {
for (int i = 0; i < n - 1; i += 2) {
if (arr[i] < arr[i + 1]) { int
temp = arr[i]; arr[i] =
arr[i + 1]; arr[i + 1] =
temp;
}
}
}
int main() { int arr[] = {10, 90, 49,
2, 1, 5, 23}; int n = sizeof(arr) /
sizeof(arr[0]); waveSort(arr, n);
for (int i = 0; i < n; i++) printf("%d ", arr[i]);
return 0;
}