Добавил:
alex20000
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:sem7_1
.c#include <stdio.h>
#include <stdlib.h>
#define SWAP(type, a, b) {type tmp = a; a = b; b=tmp;}
void shell_sort(int* arr, int len)
{
for(int step = len/2; step >= 1; step /= 2)//каждый раз уменьшаем шаг в 2 раза
{
for(int i = step; i < len; ++i)//начинаем с положения равного длине шага
{
int temp = arr[i];//записываем в перем. темп текущий элемент
int j;//положение в массиве
for(j = i; j >= step; j -= step)//идем влево с шагом step
{
if(temp < arr[j - step])//если эл-т слева больше изначального
arr[j] = arr[j - step];
else//если эл-т слева меньше изначального то заканчиваем и(*) потом записываем изначальный в текущий эл-т
break;
}
arr[j] = temp;//то, что описано в (*)
}
}
}
int main()
{
int* arr;//массив
int N;//кол-во эл-тов
scanf("%d", &N);//считываем кол-во эл-тов
arr = (int*)malloc(sizeof(int) * N);//выделяем память опд н эл-тов
for(int i = 0; i != N; ++i)//записываем в массив случайные значения
{
arr[i] = rand() % 1000000;
printf("%d ", arr[i]);
}
putchar('\n');
shell_sort(arr, N);//сортируем массив
for(int q = 0; q != N; ++q)//выводим на экран отсортированный массив
printf("%d ", arr[q]);
putchar('\n');
return 0;
}
Соседние файлы в предмете Информатика