在楊氏矩陣中查詢一個數(C語言實現)
阿新 • • 發佈:2018-12-28
分析:楊氏矩陣的特點是:這個矩陣中的數字從左到右是遞增的,從上到下也是遞增的。知道了這個特點就好寫程式了。如有以下矩陣:
2 3 4
3 4 5
4 5 6
或沒有對角線規律的楊氏矩陣:
3 6 8
5 9 10
8 13 15
思路:輸入要查詢的數n,用n和這個矩陣的右上角元素比較,如果大於右上角元素,則行值自增,向下一行移動;如果小於右上角元素,則列值自減,向左一列移動;如果等於右上角元素,說明找到該值,返回1。接著執行迴圈,用n值與接下來的數比較,直到找到這個數返回1或者找不到這個數結束迴圈。
程式碼如下:
第一個矩陣:
#include<stdio.h> int y_search(int b[][3],int i,int n) { int j=0; i--; for(j=0;j<=i;) { if(n>b[j][i]) { j++; } else if(n<b[j][i]) { i--; } else if(n==b[j][i]) { return 1; } } } int main() { int y_search(int b[][3],int i,int n); int a[][3]={{2,3,4,},{3,4,5},{4,5,6}}; int n; printf("請輸入要查詢的整數n:\n"); scanf("%d",&n); if(y_search(a,3,n)==1) { printf("輸入的數字被找到\n"); } else { printf("輸入的數字沒有被找到\n"); } return 0; }
執行結果:
(注:要實現在沒有對角線規律的楊氏矩陣中查詢一個數只需將陣列元素的值改變即可)。