Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2014, 00:20   #1
Malriser
xor esp, esp
Форумчанин
 
Регистрация: 11.02.2014
Сообщений: 135
По умолчанию Что за сортировка?

Здравствуйте, уважаемые форумчане. Наверное столь тупых вопросов не было от родня, но...

Короче, сидя без инета я начал экспериментировать и получилось закодить такой алгоритм:

Код:
for (int i = 0; i < n; i++)
for (int j = i + 1; j < n; j++)
  if (A[i] > A[j]) swap(A[i], A[j]);
Придумал этот алгоритм сам - работает; интересует вопрос как называется этот алгоритм, ведь 100% он уже есть очень давно. А то мучает вопрос, что за велосипед я создал =D
Malriser вне форума Ответить с цитированием
Старый 20.08.2014, 06:46   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Вроде бы сортировка пузырьком.
rrrFer вне форума Ответить с цитированием
Старый 20.08.2014, 10:15   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
сортировка пузырьком.
Только неработающая...
Надо продолжать сортировать пока все элементы не окажутся на своих местах.
waleri вне форума Ответить с цитированием
Старый 20.08.2014, 10:19   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Только неработающая...
Надо продолжать сортировать пока все элементы не окажутся на своих местах.
хз, вроде бы работающая.
Гарантированно за каждую итерацию внешнего цикла один элемент будет вставать на своем место. В нем столько итераций, сколько элементов в массиве. Значит все элементы окажутся на своих местах. Где я не прав?
rrrFer вне форума Ответить с цитированием
Старый 20.08.2014, 16:55   #5
Malriser
xor esp, esp
Форумчанин
 
Регистрация: 11.02.2014
Сообщений: 135
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
хз, вроде бы работающая.
Гарантированно за каждую итерацию внешнего цикла один элемент будет вставать на своем место. В нем столько итераций, сколько элементов в массиве. Значит все элементы окажутся на своих местах. Где я не прав?
Ты прав - работающая, я проверял на рандомно-заполненном массиве в 100 000 элементов.

Только вот хз, пузырьком ли это.

Код:
for(int i = 0; i < a.length - 1; i++)
    for(int j = 0; j < a.length - i - 1; j++)
        if(a[j] > a[j + 1])
            swap(a[j], a[j + 1]);
С википедии, пузырьком, как мы видим, вложенный цикл начинает работу с 0-го элемента, у меня с i+1-го элемента. Следовательно у меня сложность алгоритма меньше чем у пузырька, я не прав? И у меня меняются местами i-ые элементы и j-ые, а не j+1 и j. Так что нет, не пузырьком.

Цитата:
Сообщение от waleri
Только неработающая...
Надо продолжать сортировать пока все элементы не окажутся на своих местах
Работающая, проверь, все отлично работает.



UPD: похожа, https://ru.wikipedia.org/wiki/%D0%A1...80%D0%BE%D0%BC

Это сортировка выбором, только я не нахожу минимальный элемент О-о. Это у меня что, упрощенная сортировка выбором, WTF :D

Последний раз редактировалось Malriser; 20.08.2014 в 17:21.
Malriser вне форума Ответить с цитированием
Старый 20.08.2014, 18:36   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
хз, вроде бы работающая.
Гарантированно за каждую итерацию внешнего цикла один элемент будет вставать на своем место. В нем столько итераций, сколько элементов в массиве. Значит все элементы окажутся на своих местах. Где я не прав?
Да, все верно, недоглядел...
Но оптимально только для случаев, когда надо все элементы переставить, т.е. когда массив задом-наперед.
waleri вне форума Ответить с цитированием
Старый 20.08.2014, 19:51   #7
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

waleri
Да никогда не оптимально, че уж там ))

Цитата:
Это сортировка выбором, только я не нахожу минимальный элемент О-о.
У тебя испорченная сортировка выбором. Лучше искать минимальный элемент, чем переставлять элементы.

Кстати, о сортировках можешь тут почитать: http://pro-prof.com/archives/1462 - пузырьком, выбором и вставками. В конце там ссылки на быструю сортировку и сортировку слиянием. Есть тьма модификаций всяких алгоритмов (их в научной литературе только можно несколько тысяч найти), начиная от эффективных и распараллеливаемых. заканчивая всякой эзотерикой типа гномьей сортировки.

Че тебе далась то эта сортировка вообще?

Последний раз редактировалось rrrFer; 20.08.2014 в 19:55.
rrrFer вне форума Ответить с цитированием
Старый 20.08.2014, 21:29   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
интересует вопрос как называется этот алгоритм
Это однозначно сортировка пузырьком. Отличие Вашего алгоритма, от того, что привёл Malriser в том, что у Вас разность адресов формируется при инициализации цикла for, а у Malriser эта разница осуществляется внутри цикла при помощи инкремента одного из индексов.
Я вообще не понимаю, зачем здесь два Фора? Вот алгоритм, который работает почти на треть быстрее, чем классический.

Код:
bool x = true;
    while(x)
    {
    x = false;
    for(int i=0; i< n; i++)
      if(array[i] > array[i+1])
      {
        swap(array[i], array[i+1]);
        x = true;
      }
    }
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Сортировка массива...Что та не выходит у меня.. Pavel Lapin Паскаль, Turbo Pascal, PascalABC.NET 1 13.11.2011 16:57
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка пузырьком. Народ помогите понять что делать INC(d) Алексей_xXx Помощь студентам 13 27.05.2009 19:51