#include<stdio.h>
voidprint_result(float*,int);
voidSelect_Sort(float*,int);
intmain()
{
inti;
floatarray[10];
float*pointer;
printf("请输入10个数:\n");
for(i=0;i<10;i++)
{
scanf("%f",&array[i]);
}
pointer=array;
Select_Sort(pointer,10);
print_result(pointer,10);
return0;
}
voidprint_result(float*p,intn)
{//输出结果
intk;
for(k=0;k<n;k++)
{
printf("%g\t",*(p+k));
}
}
voidSelect_Sort(float*pt,intn)
{//全用指针的选择排序法
inti,j,k;
floattempnum;
for(i=0;i<n;i++){
k=i;
for(j=i+1;j<n;j++)
{
if(*(pt+j)>*(pt+i))
{
k=j;
}
}
tempnum=*(pt+i);
*(pt+i)=*(pt+k);
*(pt+k)=tempnum;
}
}
扩展资料:其它方法:
voidSelectSort(intarr[],intn)
{
printf("\n选择排序法过程:\n");
inti,j,k,l,t;
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(arr[j]<arr[k])
{
k=j;
}
}
if(k!=i)
{
t=arr[i];arr[i]=arr[k];arr[k]=t;
}
for(l=0;l<n;l++)
{
printf("%3c",arr[l]);
}
printf("\n");
}
}
#include<stdio.h>void input(int *p,int num)
{
//
int a[10]不能在子函数中再定义了,要用形参对应的实参, 子函数中定义的是局部变量,函数完成时,变量就释放了。
//
for(p=ap<a+10p++)
int i
for(i=0i<numi++)
scanf("%d",p+i)
}
void sort(int *p,int num)
{
//
int a[10]同前
int i,j,temp
//
for(p=ap<a+10p++)
for(i=0i<numi++) //数组下标从0开始
{
for(j=i+1j<numj++)
if(p[i]<p[j])
{
temp=p[i]
p[i]=p[j]
p[j]=temp
}
}
}
void output(int *p,int num)
{
//int a[10]同前
//
for(p=ap<a+10p++)
int i
for(i=0i<numi++)
printf("%d ",*(p+i))
}
int main()
{
int a[10]
input(a,10)
sort(a,10)
output(a,10)
return 0
}