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

Abhinandan_Assignment

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, and sorting into wave form. Each solution includes the relevant code and a main function to demonstrate its functionality. The assignments are designed to enhance understanding of array manipulation techniques.

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)
3 views

Abhinandan_Assignment

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, and sorting into wave form. Each solution includes the relevant code and a main function to demonstrate its functionality. The assignments are designed to enhance understanding of array manipulation techniques.

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/ 7

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

You might also like