Программируем

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

Join the forum, it's quick and easy

Программируем

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

Программируем

Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Программируем

На нашем форуме программистов вы сможете найти софт для программирования и другие программы. На форуме обсуждаются многие языки программирования, задачи и их решения. Используются языки: C, Assembler, Pascal, Delphi, Flash и другие.

Последние темы

» Арена искусственных интеллектов Gridwars
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. EmptyСр Окт 12, 2016 2:43 am автор SeriousPasha

» требуется несколько JS разработчиков
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. EmptyПт Окт 07, 2016 10:19 pm автор mrktwn1

» Защита приложения от взлома
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. EmptyЧт Июн 18, 2015 10:28 pm автор stradi

» Ищите программиста или дизайнера?
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. EmptyПт Мар 27, 2015 6:25 am автор фриланс

» Создание и продвижение сайтов, их развитие.
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. EmptyСр Мар 25, 2015 12:40 am автор asdfghhgfdsa

» Исходники для студентов + скайп-консультации,помощь в написании программ
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. EmptyВт Окт 07, 2014 11:25 pm автор Horpion

» IT- технологии для развития бизнеса
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. EmptyПн Июн 23, 2014 6:11 pm автор dvos12

» Стенли Кубрик "С Широко закрытыми Глазами"
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. EmptyЧт Июн 12, 2014 2:01 am автор Vertuozzz

» Каталог популярных хостинг компаний
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. EmptyСб Май 10, 2014 7:18 pm автор naik

Самые активные пользователи

Aster (142)
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_leftБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. BarБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_right 
Exkalibur (89)
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_leftБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. BarБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_right 
Чебурашка (63)
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_leftБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. BarБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_right 
Administrator (34)
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_leftБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. BarБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_right 
ak95 (8)
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_leftБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. BarБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_right 
Пушкин (7)
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_leftБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. BarБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_right 
K4_ (7)
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_leftБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. BarБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_right 
LuDa (7)
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_leftБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. BarБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_right 
Goldcoding (6)
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_leftБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. BarБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_right 
Admin (6)
Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_leftБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. BarБыстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Bar_right 

Партнеры

Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Top100 Rambler's Top100

    Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal.

    Aster
    Aster
    Admin
    Admin


    Сообщения : 142
    Очки : 274
    Репутация : 11
    Дата регистрации : 2010-01-07

    Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal. Empty Быстрая сортировка ( Quick Sort ) массива Deplhi, Pascal.

    Сообщение автор Aster Сб Янв 09, 2010 11:42 pm

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

    Все вы наверное знаете сортировку пузырьком или какие-нибудь еще квадратичные сортировки. Такие сортировки выгодны, когда размерность массива мала, так как они работают за N^2 операций. Согласитесь, что для массива размерностью, например, в 100000 элементов такая сортировка не подходит, так как будет выполняться примерно 10000000000 операций.

    Специально для таких ситуаций придумана быстрая сортировка(Quick Sort). Она работает за N log N. Что НАМНОГО быстрее квадратичной сортировки. Какова идея Qsort?

    Qsort разбивает наш массив на участки, которые отделяются переменными l и r. Когда мы определили новый участок для обработки(изначально l = 1, r = N), мы выбираем рандомный элемент(X). Теперь просто нужно сделать так, чтобы все элементы массива до X были меньше X, а все элементы после X должны быть больше X. После этого мы выбираем новый участок для обработки.

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

    Код:

    Procedure QSort(l, r: integer);
    Var i, j, x: integer;
    begin
      i := l;
      j := r;
      x := a[l + random(r - l)];
      While i < j do
      begin
        While a[i] < x do inc(i);
        While a[j] > x do dec(j);
        if i <= j then
        begin
          swap(a[i], a[j]);
          inc(i); dec(j);
        end;
      end;
      if i < r then QSort(i, r);
      if l < j then QSort(l, j);
    end;


    Примечание: Процедуру Swap нужно писать отдельно перед Quick Sort.

      Текущее время Пт Май 17, 2024 6:00 pm