写一个函数实现:将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放)之解法改写

#include<stdio.h>

void change(int *p){

int i,j,temp;

int *pmax,*pmin;

// 初始化最大值和最小值的指针

pmax=p;

pmin=p;

// 遍历矩阵,寻找最大和最小值

for(i=0;i<5;i++)

for(j=i;j<5;j++)

{

if(*pmax<*(p+5*i+j))pmax=p+5*i+j;

if(*pmin>*(p+5*i+j))pmin=p+5*i+j;

}

// 交换最大值和特定位置的元素

temp=*(p+12);

*(p+12)=*pmax;

*pmax=temp;

// 交换最小值和起始位置的元素

temp=*p;

*p=*pmin;

*pmin=temp;

pmin=p+1;

// 第二次遍历,寻找次小值并放置到特定位置

for(i=0;i<5;i++)

for(j=0;j<5;j++)

{

if(i==0&&j==0)continue; // 跳过起始位置

if(*pmin>*(p+5*i+j))pmin=p+5*i+j;

}

// 交换次小值和特定位置的元素

temp=*pmin;

*pmin=*(p+4);

*(p+4)=temp;

pmin=p+1;

// 第三次遍历,进一步确定并交换次小值的位置

for(i=0;i<5;i++)

for(j=0;j<5;j++)

{

if((i==0&&j==0)||(i==0&&j==4))continue; // 跳过起始位置和特定位置

if(*pmin>*(p+5*i+j))pmin=p+5*i+j;

}

// 交换确定的次小值和特定位置的元素

temp=*pmin;

*pmin=*(p+20);

*(p+20)=temp;

pmin=p+1;

// 第四次遍历,最后确定并交换次小值的位置

for(i=0;i<5;i++)

for(j=0;j<5;j++)

{

if((i==0&&j==0)||(i==0&&j==4)||(i==4&&j==0))continue; // 跳过已确定的位置

if(*pmin>*(p+5*i+j))pmin=p+5*i+j;

}

// 交换确定的次小值和最后一个特定位置的元素

temp=*pmin;

*pmin=*(p+24);

*(p+24)=temp;

}

/**

* 主函数,用于输入矩阵数据并调用change函数进行排序,最后输出排序后的矩阵。

*/

int main(){

int a[5][5],*p,i,j;

printf("请输入矩形:");

// 输入矩阵元素

for(i=0;i<5;i++)

for(j=0;j<5;j++)

scanf("%d",&a[i][j]);

p=&a[0][0]; // 获取矩阵的首地址

change(p); // 调用排序函数

printf("排序后:");

// 输出排序后的矩阵

for(i=0;i<5;i++){

for(j=0;j<5;j++)

printf("%d ",a[i][j]);

printf("\n");

}

return 0;

}

相关推荐
艾莉丝努力练剑1 小时前
【LeetCode&数据结构】单链表的应用——反转链表问题、链表的中间节点问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
_殊途3 小时前
《Java HashMap底层原理全解析(源码+性能+面试)》
java·数据结构·算法
珊瑚里的鱼6 小时前
LeetCode 692题解 | 前K个高频单词
开发语言·c++·算法·leetcode·职场和发展·学习方法
不知道叫什么呀7 小时前
【C】vector和array的区别
java·c语言·开发语言·aigc
秋说7 小时前
【PTA数据结构 | C语言版】顺序队列的3个操作
c语言·数据结构·算法
lifallen8 小时前
Kafka 时间轮深度解析:如何O(1)处理定时任务
java·数据结构·分布式·后端·算法·kafka
liupenglove8 小时前
自动驾驶数据仓库:时间片合并算法。
大数据·数据仓库·算法·elasticsearch·自动驾驶
python_tty9 小时前
排序算法(二):插入排序
算法·排序算法
然我9 小时前
面试官:如何判断元素是否出现过?我:三种哈希方法任你选
前端·javascript·算法
risc1234569 小时前
BKD 树(Block KD-Tree)Lucene
java·数据结构·lucene