Array Lab Assignment Solutions
Name: HARSHIT CHOUDHARY
Batch: 24A18
Roll Number: 241030093
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;
}