#include <iostream>
#include <ctime>
#include <windows.h>
using namespace std;
void founder(int *, int);
void quickSort(int *, int, int);
void unionArrays(int *, int, int *, int, int *, int);
void print(int *, int);
int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
srand((unsigned) time(NULL));
int sz1, sz2, sz3, * ptr1, * ptr2, * ptr3;
sz1 = rand() % 6 + 5;
Sleep(1001);
sz2 = rand() % 6 + 5;
sz3 = sz1 + sz2;
ptr1 = new int [sz1];
founder(ptr1, sz1);
cout << " Первый исходный: ";
print(ptr1, sz1);
quickSort(ptr1, 0, sz1 - 1);
cout << " Первый отсортированный: ";
print(ptr1, sz1);
ptr2 = new int [sz2];
founder(ptr2, sz2);
cout << " Второй исходный: ";
print(ptr2, sz2);
quickSort(ptr2, 0, sz2 - 1);
cout << " Второй отсортированный: ";
print(ptr2, sz2);
ptr3 = new int [sz3];
unionArrays(ptr1, sz1, ptr2, sz2, ptr3, sz3);
cout << " Третий объединённый: ";
print(ptr3, sz3);
quickSort(ptr3, 0, sz3 - 1);
cout << " Третий отсортированный: ";
print(ptr3, sz3);
delete[] ptr1;
delete[] ptr2;
delete[] ptr3;
cin.get();
return 0;
}
void founder(int *p, int N)
{
int n;
srand((unsigned) time(NULL));
for(n = 0; n < N; n++)
p[n] = rand() % 90 + 10;
}
void quickSort(int *p, int left, int right)
{
int n = left, m = right;
double temp, middle = p[(left + right) / 2];
do
{
while(p[n] < middle && n < right)n++;
while(middle < p[m] && m > left)m--;
if (n <= m)
{
temp = p[n];
p[n] = p[m];
p[m] = temp;
n++;
m--;
}
}
while(n <= m);
if (left < m)quickSort(p, left, m);
if (n < right)quickSort(p, n, right);
}
void unionArrays(int *p1, int sz1, int *p2, int sz2, int * un, int unsz)
{
for (int n = 0; n < unsz; n++)
{
if (n < sz1) un[n] = p1[n];
else un[n] = p2[n - sz1];
}
}
void print(int * p, int size)
{
for (int n = 0; n < size; n++)
cout << ' ' << p[n];
cout << endl;
}
Другие языки программирования и технологии
Помогите написать программу на с++: из 2х отсортированных массивов получить новый, отсортированный в том же порядке
в чем проблема то? создаешь новый массив копируешь в него
содержание первого затем второго.
содержание первого затем второго.
Похожие вопросы
- Помогите написать программу на с++ Циклический сдвиг элементов массива вправо Массив 20 элементов, random
- помогите написать программу на языке Си: В одномерном массиве целых чисел заменить максимальное значение минимальным.
- Помогите написать программу на С. Тема Составление программ с использованием массивов
- Помогите написать программу со switch в СИ
- Помогите написать программу на С++ которая в массиве чисел из Size элементов находит такую непрерывную
- Помогите пожалуйста написать программу на c++. Упорядочить элементы одномерного массива по убыванию.
- Помогите пожалуйста написать программу: Найти сумму индексов четных элементов массива. На языке С++.
- Помогите с программой на Си. (создание многомерных динамических массивов)
- Помогите написать программу выключения компьютера на С++
- Помогите написать программу на Visual Basic (найти ошибку)