Алгоритм сортировки методом выбора начинается со сравнения первых двух элементов массива и их замены в случае необходимости. Например, если вы хотите отсортировать элементы массива в порядке возрастания и если первый элемент больше второго, вам нужно поменять местами элементы. Но, если первый элемент меньше второго, элементы остаются в своей последовательности. Затем снова первый элемент и третий элемент сравниваются и меняются местами, если это необходимо. Этот процесс продолжается до тех пор, пока не будет сравнен первый и последний элемент массива. Это завершает первый шаг выбора сортировки.
Если нужно отсортировать 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, алгоритм сортировки выбора можно аналогичным образом использовать и на другом языке программирования.
Алгоритм сортировки выбора прост в использовании, но есть и другие алгоритмы сортировки, которые работает лучше, чем сортировка выбора. В частности, сортировка выбора не должна использоваться для сортировки большого количества элементов, если производительность имеет значение в этой программе.