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;
>>n;
cinint min = 0, max = 0;
for(i=0; i<n; i++) {
>> array[i];
cin }
(array, n, &min, &max);
findMinAndMax
<< "Minimum value: " << min << endl;
cout << "Maximum value: " << max << endl;
cout return 0;
}
Да се напишат фунција за сортирање на низа со помош на методот за сортирање - Метод на меурче (Bubble sort) Да се напишат функции за внесување и печатење на елементите на една низа и да се напише главна програма во која се тестира методот
#include <iostream>
using namespace std;
//Reference vs. without reference
void swap(int& a, int& b) {
int temp = a;
= b;
a = temp;
b }
void inputArray(int array[], int size)
{
for (int i = 0; i < size; i++) {
<< "Enter element " << i + 1 << ": ";
cout >> array[i];
cin }
}
void printArray(int array[], int size)
{
for (int i = 0; i < size; i++) {
<< array[i] << " ";
cout }
<< endl;
cout }
void bubbleSort(int array[], int size)
{
bool swapped = true;
while (swapped) {
= false;
swapped for (int i = 0; i < size - 1; i++) {
if (array[i] > array[i + 1]) {
(array[i], array[i + 1]);
swap= true;
swapped }
}
}
}
int main()
{
int size;
>> size;
cin
int array[size];
(array, size);
inputArray//Original array
(array, size);
printArray
(array, size);
bubbleSort//Bubble sort
(array, size);
printArray
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)
= m + 1;
l
// If x is smaller, ignore right half
else
= m - 1;
r }
// 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++) {
[i] = i + 1;
arr}
// Generate a random number within the range
(time(NULL)); // Seed the random number generator
srandint randomNum = 1 + rand() % 1000000; // Generate a random number between 1 and 1,000,000
// Perform linear search
int linearSearchIndex = linearSearch(arr, 1000001, randomNum);
<< "Linear search: " << linearSearchIndex << endl;
cout
// Perform binary search
int binarySearchIndex = binarySearch(arr, 0, 1000000, randomNum);
<< "Binary search: " << binarySearchIndex << endl;
cout
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--) {
[i] += arr[j];
arr[j] = arr[i];
arr}
if (n % 2) {
[n / 2] *= 2;
arr}
}
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;
(arr, start + 1, n);
transform}
int main() {
int n;
int arr[MAX];
<< "Enter the size of the array: ";
cout >> n;
cin
<< "Enter the elements of the array: ";
cout for (int i = 0; i < n; i++) {
>> arr[i];
cin }
//transform(arr, n);
(arr, 0, n);
transformRecursive
<< "Transformed array: ";
cout for (int i = 0; i < n; i++) {
<< arr[i] << " ";
cout }
<< endl;
cout
return 0;
}