Я не знаю, где тут у вас ошибка, ибо мне непонятны некоторые ваши обозначения. А по сему привожу работостособный участок кода на С++
где то у вас должна быть прописана процедура swap, которая будет менять местами значения 2х переменных :
void swap(int &p, int &q)
{
int t = p;
p = q;
q= t;
}
а теперь собственно код:
for(int i = 0; i<n; ++i)
{
int tmp = i;
for(int j = i; j<n; ++j) //вот в этом цикле мы будем искать наименьшее из оставшихся значений
{ //и его номер положим в переменную tmp
if(a[j]<a[tmp])
{
tmp = j;
}
}
swap(a[i], a[tmp]);
}
Таким оборазом, у нас этот отсортированный кусок будет находится в начале массива, и с каждой итерацией внешнего цикла он будет увеличиватся на 1 элемент.
З.Ы. еслисвы програмируете на паскале, то думаю вам не составит труда перпевести этот код с С на паскаль.