Сортировка Шелла! Рекомендую понять ее! Алгоритм прост и эффективен!
 

Содержание:

Я - профессиональный и опытный репетитор по информатике, программированию и математике

Вы ищите репетитора по информационным технологиям? Меня зовут Александр Георгиевич, и я тот, кто вам нужен! Уже на протяжении 10 лет я занимаюсь подготовкой школьников к успешной сдаче ОГЭ и ЕГЭ по информатике. Студентам оказываю поддержку в реализации всевозможных работ по программированию и помогаю им сдать различные экзамены по программированию.

Прекрасно понимаю, что вы чрезвычайно занятой человек, у которого куча дел, но настоятельно вам рекомендую все-таки уделить две-три минуты и познакомиться с отзывами моих клиентов, прошедших у меня курсы индивидуальной подготовки.

В основном я занимаюсь информатикой и программированием, однако иногда происходит мультиподготовка, например, когда я готовлю 11-ника к успешной сдаче ЕГЭ, как по информатике, так и по математике. Не стоит забывать о том, что основу информатики кристаллизует математика, и данные дисциплины прекрасно дополняют друг друга.

Уверен в том, что на этой странице вы оказались не случайно! Вас интересует алгоритм сортировки Шелла. Только не нужно устраивать иеремиаду, когда после прочтения данной статьи вам не все будет понятно. Для фундаментального разбора алгоритма сортировки Шелла записывайтесь ко мне на первый пробный урок.

Сортировка Шелла – это, по сути, оптимальная модификация алгоритма сортировки вставками

Сразу хочу донести следующую мысль: вы не сможете разобраться с методом сортировки Шелла, если не будете глобально понимать алгоритм сортировки вставками. Сортировка Шелла, по факту является надстройкой над способом простых вставок, поэтому, сначала исследуйте сортировку простыми вставками, потратив на это определенное время.

Еще одним краеугольным камнем в алгоритме сортировки Шелла является выбор так называемого шага упорядочивания. Существует множество теоретических изысков по данной проблеме, и ученые вывели различные формульные зависимости, позволяющие максимально оптимально детерминировать шаг сортировки. Но в большинстве случаев все происходит достаточно тривиально: изначальный шаг составляет ровно половину длины заданного массива.

Также вы должны прекрасно уметь проводить такую информатическую операцию, как сдвиг элементов одномерного массива на одну позицию влево/вправо. Это несложное действие, при котором используется циклическая конструкция и некоторое количество клеток вашего головного мозга.

Мультимедийная презентация алгоритма сортировки Шелла

Выделив свободное время в своем плотном расписании уроков, я специально для вас снял видеоролик, в котором в наглядной, а главное - в доступной форме изложен алгоритм сортировки Шелла. Сразу предупреждаю, что в нем вы не найдете пример программного кода, там повествуется исключительно об алгоритмической составляющей этого способа сортировки.

Пример кода программы на языке Паскаль, реализующего алгоритм сортировки Шелла

Меня часто спрашивают мои ученики-неофиты: насколько сложно самостоятельно запрограммировать алгоритм сортировки Шелла, до какой степени трудно и долго изучать его на самом глубоком уровне, понять все его хитросплетения? Как правило, я отвечаю, что данный процесс достаточно длителен и интеллектуально затратен. Вам придется полностью вызубрить и понять фундаментальные основы программирования перед тем, как вы сможете реализовать данный алгоритм на практике, на каком-либо языке программирования.

В качестве базового языка программирования я выбрал язык Паскаль, так как именно он является наиболее популярным и востребованным среди школьников и студентов на всей территории РФ.

  1. {заголовок программы}
  2. program shellSort;
  3. {раздел описания констант}
  4. const
  5. {количество элементов массива}
  6.   N = 10;
  7. {раздел объявления переменных}  
  8. var
  9. {сортируемый одномерный массив}
  10.   v: array[1..N] of integer;
  11. {шаг сортировки Шелла}  
  12.   d: integer;
  13. {вспомогательные переменные}
  14.   i, t: integer;
  15. {признак перестановки}  
  16.   k: boolean;
  17. {начало главного блока}  
  18. begin
  19. {чтобы каждый раз генерировались новые числа}
  20.   randomize;
  21. {заполнение массива случайными числами
  22.  от -100 до +100 и вывод на экран}  
  23.   write('ДО сортировки:    ');
  24.   for i := 1 to N do
  25.   begin
  26.     v[i] := -100 + random(201);
  27.     write(v[i]:6);
  28.   end;
  29. {шаг сортировки изначально равен
  30.  половине длины исходного массива}  
  31.   d := N div 2;
  32. {пока массив неотсортирован}  
  33.   while(d > 0) do
  34.   begin
  35.     k := true;
  36. {пока есть перестановки}    
  37.     while k do
  38.     begin
  39.       k := false;
  40.       i := 1;
  41.       for i := 1 to N - d do
  42.       begin
  43. {сравнение элементов на интервале d}      
  44.         if(v[i] > v[i + d]) then
  45.         begin
  46.           t := v[i];
  47.           v[i] := v[i + d];
  48.           v[i + d] := t;
  49.           k := true;
  50.         end;
  51.       end;
  52.     end;
  53. {сокращаем шаг сортировки в 2 раза}    
  54.     d := d div 2;
  55.   end;
  56. {печатаем отсортированный массив на экран}  
  57.   writeln;
  58.   write('ПОСЛЕ сортировки: ');
  59.   for i := 1 to N do
  60.     write(v[i]:6);
  61.   writeln;
  62. end.

Если остались какие-то вопросы, неуверенность, недопонимание, то...

Если, прочитав данный информационный материал, у вас появились какие-то дополнительные вопросы относительно алгоритма сортировки Шелла или вы хотите познакомиться с другими, не менее интересными способами упорядочивания данных, то берите в руки мобильный телефон и звоните мне на контактный номер. Задавайте любые ваши тематические вопросы, договаривайтесь о проведении первого индивидуального занятия.

Наверняка у вас проскользнула мысль о цене: сколько же стоят мои услуги? Своим потенциальным ученикам я предлагаю 144 варианта взаимовыгодного сотрудничества. Даже самый-самый требовательный клиент сможет выбрать такое взаимодействие, которое полностью удовлетворит его запросы.

Меня часто спрашивают, провожу ли я занятия на выезде. Мой ответ утвердительный – да! Своим клиентам я предлагаю четыре разных территориальных формата взаимодействия:

Не откладывайте свое решение в долгий ящик. Звоните прямо сейчас и записывайтесь на индивидуальные уроки по информатике, математике и программированию. Скажу вам честно, я – достаточно востребованный русскоязычный репетитор, следовательно, я не могу взять всех желающих под свое «крыло». Количество ученических мест ограниченно в любое время года, в особенности весной.

Отзывы
моих учеников

Леонов
Никос

 
Полученный бал, превзошел все мои ожидания, так как я максимум рассчитывал на 90 баллов тестовых. Думаю, получением столь высокой оценки я обязан репетитору Александру Георгиевичу. Но мой личный вклад тоже не мал!

Владимир
Дятлов

 
Спасибо вам за помощь) Я хотел сначала тупо все заказать на стороне, но стало интересно разобраться самостоятельно и у меня получилось благодаря вашему наставничеству. Если не сдам экзамен, то опять обращусь к вам за...

Сухоруков
Андрей

 
Я не ожидал, что Александр Георгиевич владеет знаниями, далеко выходящими за пределы любой вузовской программы. Вы очень сильный преподаватель и программист-практик. Я очень многому у него научился, почувствовал...

Даниил
Сафонов

 
Чтобы программировать, нужно быть усидчивым и очень умным человеком. Я больше гуманитарий, поэтому мне вся эта техническая мысль дается крайне сложно. Но мне понравилось работать с Александром Георгиевичем. Видно, что...

Ланцев
Дмитрий

 
Я был очень круто подготовлен. Александр Георгиевич натаскивал меня по полной программе, мы прорерашли более 200 задач по программированию, научились строить выйгрышные стратегии. Я сам виноват, что не повторил...

Пахмутов
Кирилл

 
Я не знаю почему, но так сложилось, что я не смог сходу понять логические преобразования и обратился за помощью к профессиональному репетитору Александру Георгиевичу. Результат превзошел все мои ожидания, я досконально...

Волков
Антон

 
Было очень сложно и, оказалось, что я совсем не знал ни Excel, ни C#. Александр Георгиевич подтянул мои знания и вывел их на новый квалитативный уровень. Спасибо вам и успехов!

Ермаченков
Александр

 
Был очень сложный экзамен, я безумно счастлив, что получил "хорошо", так как на "отлично" сдало всего 4 человека со всего потока (причем они серьезно изучали программирование еще до поступления в ВУЗ). Я понял, что С++...

Якименко
Александр

 
Я вообще, в школе учусь плоховато и, меня натаскивают родители, заставляют заниматься, но когда занимались с Александром Георгиевичем, то мне нравилось, я начал понимать и начинала появляться уверенность, что я Смогу....

Коваленко
Всеволод

 
Хочу отметить дисциплину на уроках, я чувствовал себя как на официальной паре, никаких шуток и панибратств. Очень понравилось серьезное отношение к дисциплине, т к я сам челвоек дисциплинированный. Спасибо вам!

Евдокимов
Максим

 
Не думал, что смогу получить 91 балл на ЕГЭ, но у меня получилось, благодаря методикам моего репетитора. Очень понятно объясняет, особенно нюансы, в которых я всегда путался и ленился разбираться.
Смотреть все отзывы
 
 
 
 
 
 
Авторизация на сайте
 
 
 
Обнаружили
ошибку на сайте?
Занятия по информатике