用指针方法将n个整数按升序排列(选择排序)

问题遇到的现象和发生背景

C语言指针的一道排序题。
用指针方法将n个整数按升序排列(选择排序)
任务描述:
编写程序,用指针实现以下功能,用选择法对一维数组中的 n 个整数按从小到大进行排序。
要求是用选择排序法
为了完成本关任务,要了解选择法排序的算法思想:
第 1 趟在 n 个整数中,选出一个最小值和无序序列的第 1 个数交换;第 2 趟在剩下的 n-1 个整数中,选出一个最小值和无序序列的第 2 个数交换;以此类推,n 个数共选 n-1 趟。

我的解答思路和尝试过的方法

希望有人来帮个忙吧,唉。


#include<stdio.h>
#define N 20
int main()
{
int a[N],*p,t,*q,*min;
int n;
scanf("%d",&n);
for(p=a; p < a+n; p++)
 {
     scanf("%d",p);
 }

for(p=a;p<a+n-1;p++)
 {
     min=p;
    for(q=p+1;q<a+n;q++)
    {
         if(*min>*q){min=q;}
     }
         if(min!=q)
   {
      t=*p;
     *p=*min;
      *min=t;
    }
 }

for(p=a;p<a+n;p++)
   {
        printf("%d ",*p);
    }
        printf("\n");
        return 0;
}