C/C++
Написать программу на Си
Написать программу для сортировки одномерного массива по убыванию методом бинарных вставок. Размерность массива, а также границы диапазона изменения элементов N и M вводятся пользователем с клавиатуры, а сам массив заполняется случайными числами из указанного пользователем диапазона. Сортировку массива и генерацию массива оформить в виде отдельных функций.
#include
#include
#include
#include
#include
void MakeArr(int arr[], int s, int nn, int mm);
void PrintArr(int arr[], int s);
void InsertionSort(int arr[], int s);
int main()
{
system("chcp 1251 > nul");
SetConsoleTitle("ОтветыМейлРу"); // Русские буквы
srand (time(NULL));
int sz; printf("Введите размер массива= "); scanf("%d", &sz);
int N,M;
printf("Введите минимальное значение элемента= "); scanf("%d", &N);
printf("Введите максимальное значение элемента= "); scanf("%d", &M);
int *marr= (int *) malloc(sz*sizeof(int));
if (marr==NULL) { printf("Ошибка выделения памяти"); exit (1); }
MakeArr(marr,sz,N,M);
PrintArr(marr,sz);
InsertionSort(marr, sz);
system("pause");
PrintArr(marr,sz); system("pause");
printf("Освобождаем память\n");
free (marr);
printf("\n"); system("pause");
return 0;
}
void MakeArr(int arr[], int s, int nn, int mm)
{
printf("Создаём массив\n");
int el=0;
while (el<s)
{
arr[el] = rand() % mm - nn; el++;
}
}
void PrintArr(int arr[], int s)
{
printf("\nВыводим массив\n");
for (int el=0; el<s; el++)
{
printf("%d\t", arr[el]);
}
}
void InsertionSort(int arr[], int s)
{
printf("\nСортируем массив\n");
int x,left,right,sred;
for (int i=1; iarr[i])
{
x=arr[i]; // x – включаемый элемент
left=0; // левая граница отсортированной части массива
right=i-1; // правая граница отсортированной части массива
do {
sred = (left+right)/2; // sred – новая "середина" последовательности
if (arr[sred]<x ) left= sred+1;
else right=sred-1;
} while (left<=right); // поиск ведется до тех пор, пока левая граница не окажется правее правой границы
for (int j=i-1; j>=left;j--) arr[j+1]= arr[j];
arr[left]= x;
}
}
printf("\nСортировка завершена\n");
}
#include
#include
#include
#include
void MakeArr(int arr[], int s, int nn, int mm);
void PrintArr(int arr[], int s);
void InsertionSort(int arr[], int s);
int main()
{
system("chcp 1251 > nul");
SetConsoleTitle("ОтветыМейлРу"); // Русские буквы
srand (time(NULL));
int sz; printf("Введите размер массива= "); scanf("%d", &sz);
int N,M;
printf("Введите минимальное значение элемента= "); scanf("%d", &N);
printf("Введите максимальное значение элемента= "); scanf("%d", &M);
int *marr= (int *) malloc(sz*sizeof(int));
if (marr==NULL) { printf("Ошибка выделения памяти"); exit (1); }
MakeArr(marr,sz,N,M);
PrintArr(marr,sz);
InsertionSort(marr, sz);
system("pause");
PrintArr(marr,sz); system("pause");
printf("Освобождаем память\n");
free (marr);
printf("\n"); system("pause");
return 0;
}
void MakeArr(int arr[], int s, int nn, int mm)
{
printf("Создаём массив\n");
int el=0;
while (el<s)
{
arr[el] = rand() % mm - nn; el++;
}
}
void PrintArr(int arr[], int s)
{
printf("\nВыводим массив\n");
for (int el=0; el<s; el++)
{
printf("%d\t", arr[el]);
}
}
void InsertionSort(int arr[], int s)
{
printf("\nСортируем массив\n");
int x,left,right,sred;
for (int i=1; iarr[i])
{
x=arr[i]; // x – включаемый элемент
left=0; // левая граница отсортированной части массива
right=i-1; // правая граница отсортированной части массива
do {
sred = (left+right)/2; // sred – новая "середина" последовательности
if (arr[sred]<x ) left= sred+1;
else right=sred-1;
} while (left<=right); // поиск ведется до тех пор, пока левая граница не окажется правее правой границы
for (int j=i-1; j>=left;j--) arr[j+1]= arr[j];
arr[left]= x;
}
}
printf("\nСортировка завершена\n");
}
Похожие вопросы
- Помогите пожалуйста написать программу на Си
- Написать программы на СИ
- Работа со структурами. Написать программу для СИ
- Помогите написать программу на СИ
- Написать программу на Си, помогите!!!
- Написать программу на СИ
- Помогите плиз написать программу на Си Массив структур
- Написать программу на Си
- Написать программу на Си
- Помогите написать программу на си