0% found this document useful (0 votes)
6 views

Array_Lab_Assignment_Solutions (1)

The document contains solutions to various array-related programming assignments in C, including finding the second largest element, largest three distinct elements, searching, binary search, merging sorted arrays, rearranging elements, rotating arrays, merge sort, calculating mean, median, mode, removing occurrences of elements, and sorting arrays into wave form. Each solution includes the relevant code and a main function demonstrating its usage. The assignments are structured to cover a range of fundamental array operations and algorithms.

Uploaded by

harshitchoudhar8
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Array_Lab_Assignment_Solutions (1)

The document contains solutions to various array-related programming assignments in C, including finding the second largest element, largest three distinct elements, searching, binary search, merging sorted arrays, rearranging elements, rotating arrays, merge sort, calculating mean, median, mode, removing occurrences of elements, and sorting arrays into wave form. Each solution includes the relevant code and a main function demonstrating its usage. The assignments are structured to cover a range of fundamental array operations and algorithms.

Uploaded by

harshitchoudhar8
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

Array Lab Assignment Solutions

Name: Jeetansh Arora

Batch: 24A18

Roll Number: 241030067

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;
}

You might also like