I, intitulado
Há uma matriz bidimensional, cada linha da matriz é incrementado da esquerda para a direita, de cima para baixo de cada coluna é incrementada para descobrir se existe um número neste array.
Requisitos: menos do que a complexidade de tempo de O (N);
Em segundo lugar, a idéia
. 4. 6. 1
2. 5. 7
. 3. 6. 9
ideia: para encontrar um número de matriz bidimensional convencional em tais métodos são atravessadas a partir do início ao fim, uma vez todas as figuras, nesta complexidade de tempo caso é O (n), não satisfaz o requisitos tópicos;
make complexidade menos de O (n), o que significa que eles não podem travessia do início ao fim, podemos re-seleccionar um ponto de partida. (Tempo Tal começar a procurar matriz bidimensional de cinco escolhas,
centro, de canto superior esquerdo, canto superior direito, inferior esquerdo, canto inferior direito, mas óbvias, a partir do canto médio ou superior esquerdo, canto inferior direito para começar, então, maior ou menor que sua direção mais, atravessar um monte de problemas.
e canto superior direito e inferior esquerdo mais conveniente, uma direção é maior do que ele, uma direção é menor do que ele. neste momento, nós escolheu o canto superior direito como a posição inicial.
, Implementação de código terceiro
#include<stdio.h>
#include<Windows.h>
#pragma warning(disable:4996)
int YangSquare(int a[][3], int x, int y,int z)
{
int i = 0; int j = 2;
while (i<x&&j>=0)
{
if (z > a[i][j])
{
i++;
}
else if (z < a[i][j])
{
j--;
}
else
{
return z;
}
}
return 0;
}
int main()
{
int z = 0;
int a[3][3] = { 1, 4, 6,
2, 5, 7,
3, 6, 9 };
printf("请输入你要查找的数:\n");
scanf("%d", &z);
printf("%d\n",YangSquare(a, 3, 3,z));
system("pause");
return 0;
}