一道二维数组的算法题

来源:互联网 发布:js判断是否为json对象 编辑:程序博客网 时间:2024/06/01 09:03

题目:

 

 

程序如下:

#include<stdio.h>#include <stdlib.h>int search(int (*a)[5],int x,int y);int main(){ int i,j;  int b[5][5]; int a[5][5]={5,85,4,2,68,78,82,75,41,14,79,47,38,1,47,1,2,14,65,13,96,87,32,14,21};  for(i=0;i<5;i++) {  for(j=0;j<5;j++)  {   b[i][j]=search(&a[0],i,j);   //b[i][j]=search(a,i,j);}}     } } for(i=0;i<5;i++) {  for(j=0;j<5;j++)  {   printf("%d\t",b[i][j]);  }  printf("\n"); }}int search(int (*a)[5],int x,int y){   int i,j,k,temp1;   int t;   int c[9];   k=0;   t=1;   for(i=x-1;i<x+2;i++)   {    for(j=y-1;j<y+2;j++)    {       if(i>=0&&j>=0&&i<5&&j<5&&!(i==x&&j==y))     {      //c[k]=*(a+i*5+j);      c[k]=a[i][j];      k++;     }    }   }   while(t)   {                  t=0;      for(i=k-1;i>=0;i--)           {

        for(j=0;j<i;j++)    {     if(c[j]>c[j+1])     {      temp1=c[j+1];      c[j+1]=c[j];      c[j]=temp1;      t=1;     }    }   }   }   return c[k/2];  }


 

运行结果如下:

 

在编程的调试的过程中,发现了两个问题。

(1)对二维数组进行函数传值时的类型不明确的问题。

(2)对基本排序算法产生了混淆。

针对两个问题的探讨。

请参考两篇帖子:

(1)数组做实参和虚参的秘密

http://blog.csdn.net/chenhuijie666/article/details/7582995

(2)基本排序算法分析-----C语言版

原创粉丝点击