Tìm giúp lỗi trong code miêu tả thuật toán tìm kiếm Selection Sort

Em viết như thế mà chạy không được, Không hiểu ra lỗi sai của mình mong anh chị DNH giúp đỡ với ạ :((
http://codepad.org/NIknBL7B

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#define MAX 100


void khoitaomang (int a[], int n)
{
    srand(time(NULL));
    n=5;
    for (int i=0; i<n; i++)
    {
        a[i]= rand()%100;
    }
}
void xuatmang (int a[], int n)
{
    for (int i=0; i<n; i++)
    {
        cout <<a[i]<<"\t";
    }
}
void selectionsort(int a[],int n)
{
    int vtmin,temp;
    for (int i=0; i<n-1; i++)
    {
        vtmin=i;
        for (int j=i+1; j<n; j++)
        {
            if (a[vtmin]>a[j]) j=vtmin;
        }

        if (vtmin!=i)
        {
            temp=a[vtmin];
            a[vtmin]=a[j];
            temp=a[j];
        }
    }

}

int main ()
{
    int a[MAX],n=5;
    khoitaomang(a,n);
    xuatmang (a,n);
    selectionsort(a,n);
    xuatmang (a,n);
    getch ();
}

Hoán vị sai, gán biến bị sai, làm theo giống như dưới

void SelectionSort(int a[],int N )
{     int   min; // chỉ số phần tử nhỏ nhất trong dãy hiện hành  

      for (int  i=0; i<N-1 ; i++)

      {
            min = i;

            for(int j = i+1; j <N ; j++)

                  if (a[j ] < a[min])

                         min = j; // ghi nhận vị trí phần tử hiện nhỏ nhất  

            Hoanvi(a[min], a[i]);
      }
 }

Phép gán chỗ này là không hợp lý nha bởi vì theo tư tưởng của thuật toán thì mình sẽ tìm vị trí min nên khi tìm được phải cập nhật cho biến min chứ không phải là j.
Sửa lại: vtmin = j; là OK

Đoạn code hoán vị của bạn sai ở cái cuối cùng
Sửa

a[j] = temp
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?