Быстрая сортировка для быстрых мозгов!
 

Содержание:

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

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

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

Уверен, что на данной странице вы оказались не случайно! Скорее всего, вас интересует алгоритм, в соответствии с которым работает быстрая сортировка. Не исключено, что вы искали по-другому названию – сортировка Хоара. Это синонимичные названия одного и того же способа сортировки массивов данных.

Прежде чем записаться ко мне на индивидуальный урок и погрузиться в хитросплетения быстрой сортировки, обязательно загляните в раздел, посвященный моей ценовой политике и подберите для себя наиболее приемлемый вариант.

Также продумайте территориальный формат проводимых уроков:

 

Что лежит в основе быстрой сортировки

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

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

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

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

Алгоритм быстрой сортировки в формате видеоурока

Специально для вас я записал небольшой мультимедийный видеоурок, в котором наглядно и лаконично рассказываю о данном алгоритме, разъясняю наиболее сложные для восприятия участки данного способа сортировки.

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

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

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

Условие задачи звучит так:

Дан одномерный массив, состоящий из 10 элементов целого типа. Заполнение элементов массива производится случайным образом из отрезка [-25..25]. Необходимо отсортировать заданный массив быстрой сортировкой по возрастанию значения элементов. Вывести элементы массива до и после сортировки на экран пользователя.

  1. {заголовок программы}
  2. program test;
  3. {раздел объявления констант}
  4. const
  5. {количество элементов в массиве}
  6.     N = 10;  
  7. {раздел объявления собственных типов данных}    
  8. type
  9. {описываем одномерный массив}
  10.     Tv = array[1..N] of integer;
  11. {вывод элементов массива на экран с диалогом}
  12. procedure print(pv : Tv; ps : string);
  13. var
  14.     i : integer;
  15. begin
  16.     write(ps);
  17.     for i := 1 to N do
  18.         write(pv[i]:5);
  19.     writeln;        
  20.     writeln;
  21. end;    
  22. {заполнение массива случайными числами из [-25..25]}
  23. procedure rand(var pv : Tv);
  24. var
  25.     i : integer;
  26. begin
  27.     for i := 1 to N do
  28.         pv[i] := -25 + random(51);
  29. end;
  30. {процедура, реализующая метод быстрой сортировки}
  31. procedure sort(var pv : Tv; left : integer; right : integer);
  32. var
  33.     i, j, x, tmp : integer;
  34. begin
  35. {выбираем "опорный" элемент}
  36.     x := pv[(left + right) div 2];
  37.     i := left;
  38.     j := right;
  39.     repeat
  40. {сканируем элементы массива слева направо}    
  41.         while(pv[i] < x) do
  42.             i := i + 1;
  43. {сканируем элементы массива справа налево}            
  44.         while(pv[j] > x) do
  45.             j := j - 1;
  46. {если границы не пересеклись, то меняем
  47.  местами найденные элементы}            
  48.         if(i <= j) then
  49.         begin
  50.             tmp := pv[i];
  51.             pv[i] := pv[j];
  52.             pv[j] := tmp;
  53.             i := i + 1;
  54.             j := j - 1;
  55.         end;
  56.     until(i > j);
  57. {рекурс. вызов для сортировки "правой" части}    
  58.     if(i < right) then
  59.         sort(pv, i, right);
  60. {рекурс. вызов для сортировки "левой" части}            
  61.     if(j > left) then
  62.         sort(pv, left, j);
  63. end;
  64. {главный блок программы}
  65. var
  66.     v : Tv;
  67.     i : integer;
  68. begin
  69.     rand(v);
  70.     print(v, 'ДО сортировки:    ');
  71.     sort(v, 1, N);
  72.     print(v, 'ПОСЛЕ сортировки: ');
  73.     writeln;
  74. end.

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

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

Остались сомнения?

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

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

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

  3. На своих уроках я использую различные мультимедийные технологии: презентации с грамотным пояснением нового материала, интерактивную доску фирмы PolyVision, наглядные физические и информационные модели.

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

Не откладывайте звонок в долгий ящик – звоните мне прямо сейчас! В настоящий момент я веду не один десяток учеников, следовательно, количество ученических мест ограничено, а желающих записаться предостаточно.

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

Агаров
Ярослав

 
Вы мой любимый репетитор) Я с вами занимаюсь программированием уже на протяжении двух лет и дальше планирую, т к у нас дальше начинается объектный Паскаль, т е Дельфи. Спасибо вам большое, на ваших частных уроках всегда...

Иванов
Денис

 
Очень много нового узнал о ДС, Александр Георгиевич показал несколько способов построения бинарного дерева, а также реализацию функций повышенного уровня сложности. Когда шел на экзамен, то абсолютно не волновался, так...

Потанин
Михаил

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

Самуйлов
Кирилл

 
Спасибо вам большое за подготовку, было очень интересно и познавательно. На самом деле я осознаю свою ошибку - нужно было к вам обратиться хотя бы за 3 месяца и тогда бы мы все фундаментально успели рассмотреть и...

Станислав
Блок

 
Спасибо вам за подготовку. Было очень интересно и познавательно. Программированием заниматься в жизни не буду, т к чувствую, что нужно еще очень многое изучать. Спасибо вам еще раз.

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

 
Не думал, что смогу получить 91 балл на ЕГЭ, но у меня получилось, благодаря методикам моего репетитора. Очень понятно объясняет, особенно нюансы, в которых я всегда путался и ленился разбираться.

Лебедев
Валерий

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

Дмитрий
Чуков

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

Леонов
Никос

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

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

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

Юзов
Артур

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

Прохоров
Дмитрий

 
Спасибо вам). Я сам не ожидал, что мне поставят пятерку, просто попался билет, связанный с обработкой строк и структур, а мы их с вами очень детально изучили и мне было все предельно ясно. С практической задачей на...

Догаев
Самир

 
Когда я поступил в ВУЗ, то я совсем не умел программировать на С++ и нам сразу стали давать сложные лабораторные, которые мне физически были не под силу. Решил найти репетитора и обратился к Александру Георгиевичу (он...
Смотреть все отзывы
 
 
 
 
 
 
Авторизация на сайте
 
 
 
Обнаружили
ошибку на сайте?
Занятия по информатике