Добавлен: 23.05.2023
Просмотров: 135
Скачиваний: 4
system("cls");
}
void InsertSort(int *mas, int n)
{
for (i = 0; i<n - 1; i++)
{
k = i + 1;
tmp = mas[k];
for (j = i + 1; j>0; j--)
{
if (tmp<mas[j - 1])
{
mas[j] = mas[j - 1];
k = j - 1;
}
}
mas[k] = tmp;
}
cout << endl << "Отсортированный массив: ";
for (i = 0; i<n; i++)
cout << mas[i] << " ";
}
void mainInsert()
{
setlocale(LC_ALL, "Rus");
int n;
cout << "Количество элементов в массиве - "; cin >> n;
int *mas = new int[n];
for (i = 0; i<n; i++)
{
cout << " элемент № " << i + 1; cin >> mas[i];
}
InsertSort(mas, n);
delete[] mas;
system("pause >> void");
system("cls");
}
void quicksort(int *mas, int frst, int lst)
{
int mid, count;
int f = frst, l = lst; mid = mas[(f + l) / 2];
do
{
while (mas[f]<mid) f++;
while (mas[l]>mid) l--;
if (f <= l)
{
count = mas[f];
mas[f] = mas[l];
mas[l] = count;
f++;
l--;
}
} while (f<l);
if (frst<l) quicksort(mas, frst, l);
if (f<lst) quicksort(mas, f, lst);
}
void mainQuick()
{
setlocale(LC_ALL, "Rus");
int *A = new int[nQS];
srand(time(NULL));
cout << "Исходный массив: ";
for (int i = 0; i<nQS; i++)
{
A[i] = rand() % 10;
cout << A[i] << " ";
}
frst = 0; lst = nQS - 1;
quicksort(A, frst, lst);
cout << endl << "Отсортированный массив: ";
for (int i = 0; i<nQS; i++) cout << A[i] << " ";
delete[]A;
system("pause >> void");
system("cls");
}
void Shell(int A[], int n)
{
d = n;
d = d / 2;
while (d>0)
{
for (i = 0; i<n - d; i++)
{
j = i;
while (j >= 0 && A[j]>A[j + d])
{
cnt = A[j];
A[j] = A[j + d];
A[j + d] = cnt;
j--;
}
}
d = d / 2;
}
for (i = 0; i<n; i++) cout << A[i] << " ";
}
void mainShell()
{
setlocale(LC_ALL, "Rus");
cout << "Размер массива - "; cin >> n;
int *A = new int[n];
for (i = 0; i<n; i++)
{
cout << " элемент № " << i + 1; cin >> A[i];
}
cout << "\nОтсортированный массив: ";
Shell(A, n);
delete[] A;
system("pause >> void");
system("cls");
}
void Swap(int *Mas, int i)
{
int tmp;
tmp = Mas[i];
Mas[i] = Mas[i - 1];
Mas[i - 1] = tmp;
}
void ShakerSrt(int *Mas, int Start, int N)
{
int L, R, i;
L = Start;
R = N - 1;
while (L <= R)
{
for (i = R; i >= L; i--)
if (Mas[i - 1]>Mas[i]) Swap(Mas, i);
L++;
for (i = L; i <= R; i++)
if (Mas[i - 1]>Mas[i]) Swap(Mas, i);
R--;
}
}
void mainShaker()
{
setlocale(LC_ALL, "Rus");
int n, k;
cout << "Размер массива - "; cin >> n;
int *A = new int[n];
for (k = 0; k<n; k++)
{
cout << " элемент № " << i + 1; cin >> A[k];
}
ShakerSrt(A, 1, n);
cout << "Отсортироанный массив: ";
for (k = 0; k<n; k++)cout << " " << A[k];
system("pause >> void");
system("cls");
}
void GnomeSrt(int i, int j, int *mas)
{
while (i<n)
{
if (mas[i - 1] <= mas[i]) { i = j; j++; }
else
{
int t = mas[i];
mas[i] = mas[i - 1]; mas[i - 1] = t;
i--;
if (i == 0) { i = j; j++; }
}
}
cout << "Отсортированный массив: ";
for (i = 0; i<n; i++)
cout << mas[i] << " ";
}
void mainGnome()
{
setlocale(LC_ALL, "Rus");