Пример. Метод выбора минимального элемента. Ищем в массиве минимальный элемент и ставим его на первое место. Затем из оставшихся элементов также ищем минимальный и ставим на следующее место и т.д. В сравнении с методом пузырька, этот метод требует значительно меньше перестановок элементов (в худшем случае N-1). Он дает значительный выигрыш, если перестановки сложны и занимают много времени.
#include <stdio.h>
const N = 10;
void main()
{
int i, j, nMin, A[N], c;
// ввод массива A
for ( i = 0; i < N-1; i ++ )
{
nMin = A[i];
for ( j = i+1; j < N-1; j ++ )
if ( A[j] < A[nMin] )
nMin = j;
if ( nMin != i )
{
c = A[i]; A[i] = A[nMin];
A[nMin] = c;
}
}
printf("\n Отсортированный массив:\n”);
for ( i = 0; i < N; i ++ )
printf("%d ", A[i]);
}
for ( i = 0; i < N-1; i ++ ){
nMin = i;
for ( j = i+1; j < N; j ++ )
if ( A[j] < A[nMin] )
nMin = j;
if ( nMin != i ){
c = A[i]; A[i] = A[nMin];
A[nMin] = c;
}
}