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;
}