
void swap (int *a, int *b) {
int tmp = *a;
*a = *b;
*b = tmp;
}void findMinAndMax(int arr[], int size, int *min, int *max) {
*min = arr[0];
*max = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] < *min) {
*min = arr[i];
}
if (arr[i] > *max) {
*max = arr[i];
}
}
}
int main() {
int array[100];
int i,n;
cin>>n;
int min = 0, max = 0;
for(i=0; i<n; i++) {
cin >> array[i];
}
findMinAndMax(array, n, &min, &max);
cout << "Minimum value: " << min << endl;
cout << "Maximum value: " << max << endl;
return 0;
}Да се напишат фунција за сортирање на низа со помош на методот за сортирање - Метод на меурче (Bubble sort) Да се напишат функции за внесување и печатење на елементите на една низа и да се напише главна програма во која се тестира методот
#include <iostream>
using namespace std;
//Reference vs. without reference
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
void inputArray(int array[], int size)
{
for (int i = 0; i < size; i++) {
cout << "Enter element " << i + 1 << ": ";
cin >> array[i];
}
}
void printArray(int array[], int size)
{
for (int i = 0; i < size; i++) {
cout << array[i] << " ";
}
cout << endl;
}
void bubbleSort(int array[], int size)
{
bool swapped = true;
while (swapped) {
swapped = false;
for (int i = 0; i < size - 1; i++) {
if (array[i] > array[i + 1]) {
swap(array[i], array[i + 1]);
swapped = true;
}
}
}
}
int main()
{
int size;
cin >> size;
int array[size];
inputArray(array, size);
//Original array
printArray(array, size);
bubbleSort(array, size);
//Bubble sort
printArray(array, size);
return 0;
}Да се напишат следните функции за пребарување во низа: • Линеарно пребарување • Бинарно пребарување Потоа да се напише главна програма во која ќе се пополнува низа со броевите од 1 до 1 000 000, а потоа се генерира случаен број во овој опсег чија што позиција треба да се пронајде со повикување на двете функции за пребарување.
За двете функции избројте го и споредете го бројот на потребни итерации за пронаоѓање на бројот.
#include <iostream>
#include <cstdlib> // For rand()
#include <ctime> // For time()
using namespace std;
int linearSearch(int arr[], int n, int key) {
for (int i = 0; i < n; i++) {
if (arr[i] == key) {
return i;
}
}
return -1;
}
int binarySearchIterative(int arr[], int l, int r, int x)
{
while (l <= r) {
int m = l + (r - l) / 2;
// Check if x is present at mid
if (arr[m] == x)
return m;
// If x greater, ignore left half
if (arr[m] < x)
l = m + 1;
// If x is smaller, ignore right half
else
r = m - 1;
}
// If we reach here, then element was not present
return -1;
}
int binarySearch(int arr[], int l, int r, int key)
{
if (l <= r) {
int mid = l + (r - l) / 2;
if (arr[mid] == key) {
return mid;
} else
if (arr[mid] < key) {
return binarySearch(arr, mid + 1, r, key);
} else {
return binarySearch(arr, l, mid - 1, key);
}
}
return -1;
}
int main()
{
// Initialize the array with numbers from 1 to 1,000,000
int arr[1000001];
for (int i = 0; i < 1000001; i++) {
arr[i] = i + 1;
}
// Generate a random number within the range
srand(time(NULL)); // Seed the random number generator
int randomNum = 1 + rand() % 1000000; // Generate a random number between 1 and 1,000,000
// Perform linear search
int linearSearchIndex = linearSearch(arr, 1000001, randomNum);
cout << "Linear search: " << linearSearchIndex << endl;
// Perform binary search
int binarySearchIndex = binarySearch(arr, 0, 1000000, randomNum);
cout << "Binary search: " << binarySearchIndex << endl;
return 0;
}Да се напише програма која влезната низа a ќе ја трансформира во излезна низа b на следниот начин: bi = ai + an − 1 − i
Влезната низа 1 2 3 5 7 треба да се трансформира во 8 7 6 7 8.
Објаснување: Бидејќи влезната низа a е со големина n, низата b ќе биде со иста големина. Трансформацијата се врши со парно собирање и замена на елементи. За секој пар елементи a[i] и a[n-1-i], каде што i се движи од [0 до n/2-1], нивниот збир е зачуван во b[i], додека a[i] се заменува со [n-1-i]. Ако n е непарен, средниот елемент a[n/2] се множи со 2.
#include <iostream>
using namespace std;
#define MAX 100
void transform(int arr[], int n) {
for (int i = 0, j = n - 1; i < j; i++, j--) {
arr[i] += arr[j];
arr[j] = arr[i];
}
if (n % 2) {
arr[n / 2] *= 2;
}
}
void transformRecursive(int *arr, int start, int n) {
if (start >= n/2) {
if (n % 2 == 1) {
*(arr + n/2) *= 2;
}
return;
}
int end = n - start - 1;
int tmp = *(arr + start) + *(arr + end);
*(arr + start) = tmp;
*(arr + end) = tmp;
transform(arr, start + 1, n);
}
int main() {
int n;
int arr[MAX];
cout << "Enter the size of the array: ";
cin >> n;
cout << "Enter the elements of the array: ";
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
//transform(arr, n);
transformRecursive(arr, 0, n);
cout << "Transformed array: ";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}