起泡法➕指针
#include<stdio.h>
void sort( int x[] ,int n )//自定义函数中形参中的数组初始定义时可以为空[]
{
int j , max , t ;//这不就是起泡法吗,唉😮💨
for ( int i = 0 ; i < n - 1 ; i ++ )//十个数,所以只需要比较10-1次
{
max = i ;//先假设最大的数是序号为1,也就是x[0]
for ( j = i + 1 ; j < n ; j ++ )//从第二位数开始进行比较,也就是x[1],所以j=i+1
{
if ( x[j] > x[max] )//也可以写成if ( *(x+j) > *(x+max) ,这两者是等价的
{
max = j ;
}
if ( max != i )//如果上面的假设不成立,就需要换掉相应数组的位置,也就是把第一位地址里面的值给换掉,换成最大的那个数
{
t = x[i] ;
x[i] = x[max] ;
x[max] = t ;
}
}
}
}
int main ()
{
int i ;
int *p ;
int a[10] ;
p = a ;
for ( i = 0 ; i < 10 ; i ++ )//i只起到循环限制的意思,终止循环的条件
{
scanf("%d",p++);//p每次循环加一,使其地址每次的前进一位
}
p = a ;//因为在上面的循环中p的地址指向已经到了9,所以需要重新指向
sort( p , 10 ) ;//😊这里指针变量作为数组传给了自定义函数,
for ( p = a , i = 0 ; i < 10 ; i ++ )
{
printf ("%d ",*p);
p ++ ;
}
printf ("\n");
return 0;
}