5. Common Array Operations
5.1 Array Traversal
5.1.1 Forward Traversal
// Python equivalent: for item in list:
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
5.1.2 Reverse Traversal
// Python equivalent: for item in reversed(list):
for (int i = size - 1; i >= 0; i--) {
printf("%d ", arr[i]);
}
5.1.3 Traversal with Condition
// Print only even numbers
for (int i = 0; i < size; i++) {
if (arr[i] % 2 == 0) {
printf("%d ", arr[i]);
}
}
5.2 Finding Maximum and Minimum
Python vs C Comparison:
Python | C |
---|---|
max(list) |
Manual implementation |
min(list) |
Manual implementation |
5.2.1 Finding Maximum
int find_max(int arr[], int size) {
if (size <= 0) {
printf("Error: Empty array\n");
return INT_MIN; // Return minimum integer value
}
int max = arr[0]; // Assume first element is maximum
for (int i = 1; i < size; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
5.2.2 Finding Minimum
int find_min(int arr[], int size) {
if (size <= 0) {
printf("Error: Empty array\n");
return INT_MAX; // Return maximum integer value
}
int min = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
5.2.3 Finding Both Max and Min with Position
#include <stdio.h>
typedef struct {
int max_value;
int max_index;
int min_value;
int min_index;
} MinMaxResult;
MinMaxResult find_min_max(int arr[], int size) {
MinMaxResult result = {arr[0], 0, arr[0], 0};
for (int i = 1; i < size; i++) {
if (arr[i] > result.max_value) {
result.max_value = arr[i];
result.max_index = i;
}
if (arr[i] < result.min_value) {
result.min_value = arr[i];
result.min_index = i;
}
}
return result;
}
5.3 Searching in Arrays
5.3.1 Linear Search
int linear_search(int arr[], int size, int target) {
for (int i = 0; i < size; i++) {
if (arr[i] == target) {
return i; // Return index of found element
}
}
return -1; // Element not found
}
// Usage example
int main() {
int numbers[] = {10, 25, 8, 42, 15};
int size = sizeof(numbers) / sizeof(numbers[0]);
int target = 42;
int index = linear_search(numbers, size, target);
if (index != -1) {
printf("Element %d found at index %d\n", target, index);
} else {
printf("Element %d not found\n", target);
}
return 0;
}
5.3.2 Count Occurrences
int count_occurrences(int arr[], int size, int target) {
int count = 0;
for (int i = 0; i < size; i++) {
if (arr[i] == target) {
count++;
}
}
return count;
}
5.3.3 Find All Occurrences
#include <stdio.h>
#define MAX_INDICES 100
int find_all_occurrences(int arr[], int size, int target, int indices[]) {
int count = 0;
for (int i = 0; i < size && count < MAX_INDICES; i++) {
if (arr[i] == target) {
indices[count] = i;
count++;
}
}
return count; // Number of occurrences found
}
// Usage example
int main() {
int numbers[] = {1, 3, 7, 3, 9, 3, 2};
int size = sizeof(numbers) / sizeof(numbers[0]);
int target = 3;
int indices[MAX_INDICES];
int count = find_all_occurrences(numbers, size, target, indices);
printf("Element %d found %d times at indices: ", target, count);
for (int i = 0; i < count; i++) {
printf("%d ", indices[i]);
}
printf("\n");
return 0;
}
5.4 Array Modification Operations
5.4.1 Filling Arrays
void fill_array(int arr[], int size, int value) {
for (int i = 0; i < size; i++) {
arr[i] = value;
}
}
// Fill with sequential numbers
void fill_sequence(int arr[], int size, int start) {
for (int i = 0; i < size; i++) {
arr[i] = start + i;
}
}
5.4.2 Copying Arrays
void copy_array(int source[], int destination[], int size) {
for (int i = 0; i < size; i++) {
destination[i] = source[i];
}
}
// Usage
int main() {
int original[] = {1, 2, 3, 4, 5};
int copy[5];
copy_array(original, copy, 5);
return 0;
}
5.4.3 Reversing Arrays
void reverse_array(int arr[], int size) {
for (int i = 0; i < size / 2; i++) {
// Swap elements
int temp = arr[i];
arr[i] = arr[size - 1 - i];
arr[size - 1 - i] = temp;
}
}
No comments to display
No comments to display