Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB

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

алгоритм, сортировка методом выбора, Selection sort algorithm, сортировка

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

Если нужно отсортировать n элементов, процесс, упомянутый выше, следует повторить n-1 раз, чтобы получить требуемый результат. Для повышения производительности на втором шаге сравнение начинается со второго элемента, потому что после первого шага требуемое число автоматически помещается в первый. Аналогично, на третьем этапе сравнение начинается с третьего элемента и так далее. В случае сортировки в порядке возрастания, наименьший элемент будет первым, а в случае сортировки по убыванию, наибольший элемент будет первым.

Рассмотрим на рисунке работу алгоритма сортировки методом выбора.

Программа на C для сортировки элементов с использованием алгоритма сортировки методом выбора
#include <stdio.h>
int main()
 {
    int data[100],i,n,steps,temp;
    printf("Enter the number of elements to be sorted: ");
    scanf("%d",&n);
    for(i=0;i<n;++i)
      {
       printf("%d. Enter element: ",i+1);
       scanf("%d",&data[i]);
    }
    for(steps=0;steps<n;++steps)
    for(i=steps+1;i<n;++i)
     {
         if(data[steps]>data[i])  
/* Чтобы отсортировать в порядке убывания, измените> на <. */
          {
             temp=data[steps];
             data[steps]=data[i]; 
             data[i]=temp;
         }
    }
    printf("In ascending order: ");
    for(i=0;i<n;++i)
        printf("%d  ",data[i]);
    return 0;
}
Enter the number of elements to be sorted: 5
1. Enter element: 12
2. Enter element: 1
3. Enter element: 23
4. Enter element: 2
5. Enter element: 0
In ascending order: 0 1 2 12 23

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

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
IT
25 марта 2019 г. 17:32
Ilya The Engineer

Qt - Тест 001. Сигналы и слоты

  • Результат:5баллов,
  • Очки рейтинга-10
G
25 марта 2019 г. 8:34
GAG

C++ - Тест 002. Константы

  • Результат:41баллов,
  • Очки рейтинга-8
G
25 марта 2019 г. 8:25
GAG

C++ - Тест 001. Первая программа и типы данных

  • Результат:66баллов,
  • Очки рейтинга-1
Последние комментарии
26 марта 2019 г. 8:49
Евгений Легоцкой

Да Да Да. Я тоже сейчас вспомнил, что проблема -R в том, что права и для файлов и для каталогов устанавливаются. А для веб-серверов нужно, чтобы права на каталоги были 755, а на файлы 64...
26 марта 2019 г. 8:47
Ruslan Polupan

Был не прав....Почитал маны, флаг «выполнения» по-разному действует на файлы и каталоги.Правильно так chmod -R go=rX,u=rwX /path/to/target/dir
26 марта 2019 г. 8:35
Евгений Легоцкой

По моему, только эта директория /path/to/target/dir и получит эти права, а все остальные вложенные остануться с тем, с чем были. UPD: Или я что-то жёстко путаю? ))) Надо переп...
22 марта 2019 г. 12:32
Евгений Легоцкой

Ну может бибилотеки не те положили? У вас сборка для MinGW, а либы для MSVC.
Сейчас обсуждают на форуме
26 марта 2019 г. 12:07
Евгений Легоцкой

Пожалуйста, не загружайте сейчас никакие изображения, это сейчас не работает. Вечером исправлю, остались ошибки на сервере после его переезда.
U
25 марта 2019 г. 12:43
Unreal_man

Как сделать чтоб при клике на ячейку(ос андроид) ее сразу можно было редактировать?QGuiApplication::inputMethod()->show(); показывает клавиатуру, а вот что до этого прописать чтоб текст в ...
m
24 марта 2019 г. 10:36
monevich

Отвечу на свой же вопрос, может кому то это пригодится. Да, можно в функции main использовать такую конструкцию. При запуске программы из Qt передаю свой аргумент в параметрах командной строк...
22 марта 2019 г. 12:29
Дмитрий

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

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы