1. 程式人生 > >楊氏矩陣 //有一個二維陣列. //陣列的每行從左到右是遞增的,每列從上到下是遞增的. //在這樣的陣列中查詢一個數字是否存在。 //時間複雜度小於O(N);

楊氏矩陣 //有一個二維陣列. //陣列的每行從左到右是遞增的,每列從上到下是遞增的. //在這樣的陣列中查詢一個數字是否存在。 //時間複雜度小於O(N);

//陣列: //1 2 3 //2 3 4 //3 4 5 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdlib.h> #include <stdio.h> int search(int arr[3][3], int row, int col, int k, int px, intpy) { int i = 0; int j = col - 1; //從右上角開始查詢 //在有效範圍內查詢 while (i < row &&j >= 0) { if (arr[i][j] == k) { *px = i; *py = j; return 1; } else if (arr[i][j] < k) { i++; } else { j–; } } *px = -1; *py = -1; return 0; } int main() { int a[3][3] = { 1, 2, 3, 2, 3, 4, 3, 4, 5 }; int px; int py; search(a, 3, 3, 5,&px,&py); printf("%d %d\n", px,py); system(“pause”); return 0; }