代码块:
方法1:
#include
void sort(int (*s)[5], int x, int y); //定义排序函数
int main()
{
int n[5][5], *p, i, j;
for (p=*n, printf("Please enter array: "); p<*n+25; scanf("%d", p++)); //输入5*5矩阵
sort(n, 5, 5); //调用排序函数
for (i=0, printf("Array:\n"); i<5; printf("\n"), i++) //输出变更后的矩阵
for (j=0; j<5; printf("%3d", n[i][j++]));
return 0;
}
//排序函数,函数思路是:通过每轮循环找出最小的元素,然后记录该元素的行列号,循环完毕,把该元素与放置位置元素进行互换。
void sort(int (*s)[5], int x, int y)
{
int i, j, t, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, min, max;
for (i=0, min=**s; ifor (j=0; j*(*(s+i)+j)<min ? min=*(*(s+i)+j), m0=i, m1=j, j++ : j++);
t=**s, **s=*(*(s+m0)+m1), *(*(s+m0)+m1)=t;
for (i=0, min=*(*s+1); ifor (j=0; jif (!i&&!j) continue;
else if (*(*(s+i)+j)<min) min=*(*(s+i)+j), m2=i, m3=j;
t=*(*s+4), *(*s+4)=*(*(s+m2)+m3), *(*(s+m2)+m3)=t;
for (i=0, min=*(*s+1); ifor (j=0; jif ((!i&&!j)||(!i&&j==4)) continue;
else if (*(*(s+i)+j)<min) min=*(*(s+i)+j), m4=i, m5=j;
t=*(*(s+4)), *(*(s+4))=*(*(s+m4)+m5), *(*(s+m4)+m5)=t;
for (i=0, min=*(*s+1); ifor (j=0; jif ((!i&&!j)||(!i&&j==4)||(i==4&&!j)) continue;
else if (*(*(s+i)+j)<min) min=*(*(s+i)+j), m6=i, m7=j;
t=*(*(s+4)+4), *(*(s+4)+4)=*(*(s+m6)+m7), *(*(s+m6)+m7)=t;
for (i=0, max=**s; ifor (j=0; j*(*(s+i)+j)>max ? max=*(*(s+i)+j), m8=i, m9=j, j++ : j++);
t=*(*(s+2)+2), *(*(s+2)+2)=*(*(s+m8)+m9), *(*(s+m8)+m9)=t;
}
方法2:
#include
#include
void input(int *a);
void print(int *a);
void sort(int *a);
int main()
{
int *arr;
arr=(int *)calloc(5, 5*sizeof(int));
input(arr);
sort(arr);
print(arr);
system("pause");
return 0;
}
void input(int *a)
{
int *p;
for (p=a, printf("Please enter array: "); p25; scanf("%d", p++));
}
void print(int *a)
{
int *p, i;
for (p=a, i=0, printf("New array:\n"); p25; printf("%5d ", *p++), i++)
if (i&&i%5==0) printf("\n");
printf("\n");
}
void sort(int *a)
{
int i, j, m1, m2, m3, m4, m5, temp;
for (i=0, j=0, m1=*(a+12); i<25; i++)
if (*(a+i)>m1){
m1=*(a+i);
j=i;
}
temp=*(a+12), *(a+12)=*(a+j), *(a+j)=temp;
for (i=0, j=0, m2=*a; i<25; i++)
if (*(a+i)*(a+i);
j=i;
}
temp=*a, *a=*(a+j), *(a+j)=temp;
for (i=0, j=0, m3=*(a+4); i<25; i++){
if (i==0) continue;
else if(*(a+i)*(a+i);
j=i;
}
}
temp=*(a+4), *(a+4)=*(a+j), *(a+j)=temp;
for (i=0, j=0, m4=*(a+20); i<25; i++){
if (i==0||i==4) continue;
else if (*(a+i)*(a+i);
j=i;
}
}
temp=*(a+20), *(a+20)=*(a+j), *(a+j)=temp;
for (i=0, j=0, m5=*(a+24); i<25; i++){
if (i==0||i==4||i==20) continue;
else if (*(a+i)*(a+i);
j=i;
}
}
temp=*(a+24), *(a+24)=*(a+j), *(a+j)=temp;
}