
- •Оглавление
- •1. Вычисление нод алгоритмом Евклида
- •2. Нахождение нод и нок
- •3. Вычисление факториала
- •4. Вычисление факториала рекурсивно
- •5. Вычисление биноминального коэффициента
- •7. Разложение целого числа на сумму биноминальных коэффициентов
- •8. Сумма некоторых элементов массива
- •9. Модификация массива данных. Вариант 1.
- •10. Модификация массива данных. Вариант 2.
- •11. Работа с числами массива
- •12. Поиск совпадений чисел в массиве
- •13. Растяжение списка и вставка, удаление из списка и сжатие. Вариант 1.
- •14. Растяжение списка и вставка, удаление из списка и сжатие. Вариант 2.
- •15. Подсчет количества цифр в целом числе
- •16. Проверка целого числа на симметрию цифр. Вариант 1.
- •17. Проверка целого числа n на симметрию цифр Вариант 2.
- •19. Программа проверки глубины вложения скобок
- •20. Формирование двумерного массива
- •21. Вычисление определителя матрицы второго порядка
- •22. Вычисление определителя матрицы 3 - го порядка
- •23. Нахождение обратной перестановки и по ней циклической формы
- •24. Сортировка_1 простыми вставками
- •25. Сортировка_2 простыми вставками
- •26. Сортировка алгоритмом Шелла
- •27. Быстрая сортировка Хоора
- •28. Поразрядная сортировка
- •29. Cортировка 1 методом пузырька
- •30. Cортировка 2 методом пузырька
- •31. Работа с библиотечными карточками
- •32. Работа 1 с конструктором и деструктором
- •33. Работа 2 с конструктором и деструктором
- •34. Работа с комплексными числами
- •35. Работа_1 с комплексными числами через указатели
- •36. Работа_2 с комплексными числами через указатели
- •37. Построение циклической очереди статическое распределение памяти
- •38. Построение стека символов статическое распределение памяти
- •39. Код работы с циклической очередью, переделанный из кода стека
- •40. Код работы со стеком, переделанный из кода циклической очереди
- •41. Генерирование случ. Чисел с показательным распределением
- •42. Работа со стеком динамическое распределение памяти
24. Сортировка_1 простыми вставками
#include "stdafx.h"
#include <math.h>
#include <iostream>
using namespace std;
#include <conio.h>
void main ()
{
int A[20],X; //Х - временное хранение выносимой переменной
int i,n,j,FLAG,k=1; // k - число проходов, необходимых для сортировки
cout<<"Enter the ize of dimension A[] , n= ";
cin>>n;
cout<<"\n Enter items of dimension: \n";
for(i=1;i<=n;i++) cin>>A[i];
while(k<n)
{
A[0]=-1;
FLAG=0;
// FLAG=1 признак наличия в цикле вставки Х в найденное место
for(i=1;i<=n;i++)
{
if(FLAG==1) break; // проход завершен, Х найден
if(A[i]<A[i-1])
{
X=A[i];
A[i]=A[i-1];
for(j=i-2;j>=0;j--)
{
if((A[j]<X)&&(FLAG==0))
{
A[j+1]=X;
FLAG=1;
j=-1;
}
if(A[j]>X)A[j+1]=A[j]; //сдвиг вправо
}
}
}
if(FLAG==0) break;
// выход из цикла, т.к. массив чисел уже отсортирован
k++;
}
cout<<"\n Result: \n";
for(i=1;i<=n;i++) cout<<A[i]<<" ";
_getch();
}
25. Сортировка_2 простыми вставками
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <conio.h>
#define SIZE 10
// сортировка вставками
int main ()
{
int A[SIZE],i,k,j,ch,n;
cout<<"Enter size A[] , n= ";
cin>>n;
cout<<"\n Enter elements: \n";
for(i=1;i<=n;i++) cin>>A[i];
A[0]=-100;
for (i=1;i<=n;i++) // цикл по прогонам и по числам одновременно
{
if(A[i]> A[i+1]) // не в том порядке, выносим A[i+1]
{
ch=A[i+1];
for(j=0;j<i;j++) // ищем место
{
if((ch<A[j+1])&&(ch>A[j]))
{
for(k=j+1;k<(i+1);k++) A[k+1]=A[k]; A[j+1]=ch;
}
}
}
cout<<"\n work array: \n";
for(int t=1;t<=n;t++) cout<<A[t]<<" ";
}
cout<<"\n Resultat: \n";
for(i=1;i<=n;i++) cout<<A[i]<<" ";
_getch();
return 0;
}
26. Сортировка алгоритмом Шелла
#include "stdafx.h"
#include <math.h>
#include <iostream>
using namespace std;
#include <conio.h>
void shell (int *, int, int);
int main ()
{
/* Инициализация */
int A[40];
int i,n;
cout<<"Enter n= ";
cin>>n;
cout<<"\n Enter array \n";
for(i=0;i<n;i++) cin>>A[i];
shell(A,n,5); //5 - начальный шаг
cout<<"Result:\n";
for(i=0;i<n;i++) cout<<" "<<A[i];
_getch();
return 0;
}
void shell (int * A, int n, int k)
{
for (;k>=1;k--) // для каждого убывающего шага
{
for (int i=0;i<n;i++) // цикл по индексу массива
{
for (int j=i;j+k<n;j=j+k)
// выполняем сортировку j+k чисел
{
for (int l=j+k;l<n;l=l+k)
{
if(A[j]>A[l])
{
int X=A[j];
A[j]=A[l];
A[l]=X;
}
}
}
}
cout<<"\n k="<<k;
for(int v=0;v<n;v++) cout<<" "<<A[v];
cout<<"\n";
}
}
27. Быстрая сортировка Хоора
// ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА БЫСТРОЙ СОРТИРОВКИ ХООРА элементов по возрастанию их значений
#include "stdafx.h"
#include <math.h>
#include <iostream>
using namespace std;
int n;
void xoor(int*,int,int,int);
main()
{
// Инициализация
int A[40];
int i;
printf ("Input n= ");
scanf("%d",&n);
printf(" Enter items of array A:\n");
for(i=0;i<=n-1;i++) scanf("%d",&A[i]);
xoor(A,0,n-1,n);
printf(" Selected array A: \n");
for(i=0;i<=n-1;i++)printf(" %d ",A[i]);
return 0;
}
// РЕКУРСИЯ
void xoor(int* A,int m,int l,int n)
{
int i,j=l,k=0,p,X=A[(m+l)/2];
for(i=m;i<=(l+m)/2;i++)
{
if(((A[i]>X) && (A[j]<=X))||(A[i]> A[j]))
{
p=A[j];
A[j]=A[i];
A[i]=p;
xoor(A,m,l,n);
}
else i--;
j--;
if(j==(l+m)/2)
{
i++;
j=l;
}
}
for(i=0;i<=n-1;i++)
{
if(A[i]<A[i+1])k=k+1;
}
if(k==n) return;
if (m<(l-1)) // сортировка правой части от m до l
{
m=(l+m)/2;
xoor(A,m,l,n);
}
else // сортировка левой части от l/2 элемента до m
{
l=m;
m=l/2;
if(l!=0)xoor(A,m,l,n);
}
}