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


    #include<stdio.h>
    #include<stdlib.h>
    
    int main(){
        setvbuf(stdout,NULL,_IONBF,0);
        int a[5][5];
        int i,j;
        void process(int *a);
    
        printf("Input the matrix:
    ");
        for(i=0;i<5;i++)
            for(j=0;j<5;j++)
                scanf("%d",&a[i][j]);
    
        process(*a);
    
        printf("Output the matrix
    ");
        for(i=0;i<5;i++)
            for(j=0;j<5;j++)
                {
                    printf("%-3d",a[i][j]);
                    if(j==4)
                        printf("
    ");
                }
        return EXIT_SUCCESS;
    }
    
    void process(int *a){
        int i,j,k;
        int max,min;
        int mins[4]={0,4,20,24};
        int t;
    
        //寻找大数,放中间
        max=12;
        for(i=0;i<25;i++)
            if(a[i]>a[max])
                max=i;
        if(max!=12)
        {
            t=a[max];
            a[max]=a[12];
            a[12]=t;
        }
    
        //寻找4个小数,放四角
        for(i=0;i<4;i++)
        {
            min=mins[i];
            for(j=0;j<25;j++)
            {
                //保证已放好位置的小数不参与比较
                for(k=0;k<i;k++)
                    if(j==mins[k])
                        break;
                if(k==i)
                {
                    if(a[j]<a[min])
                        min=j;
                }
            }
            if(min!=mins[i])
            {
                t=a[min];
                a[min]=a[mins[i]];
                a[mins[i]]=t;
            }
        }
    }

    当把2维数组中的首元素地址传递到函数后,2维数组a[5][5]当作1维数组a[25]处理。

    整体思路是选择法:

    找到数组a[25]中最大的数,与a[12]交换位置;

    先找到a[0-24]中最小的数,与a[0]交换位置,

    找到a[1-24]中最小的数,与a[4]交换位置;

    找到a[1-3,5-24]中最小的数,与a[20]交换位置;

    找到a[1-3,5-19,21-24]中最小的数,与a[24]交换位置。

  • 相关阅读:
    (转)了解JNDI
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver问题
    占个座
    关于 inode 与 iblock 的知识
    机器学习性能度量指标:ROC曲线、查准率、查全率、F1
    编译出现的问题解决
    二分查找(Binary Search)
    ST算法 Sliding Window algorithm template
    数据结构_算法
    知识点积累
  • 原文地址:https://www.cnblogs.com/Camilo/p/3368640.html
Copyright © 2020-2023  润新知