題目描述:
楊氏矩陣
有乙個二維陣列.
陣列的每行從左到右是遞增的,每列從上到下是遞增的.
在這樣的陣列中查詢乙個數字是否存在。
時間複雜度小於o(n);
思路:
在楊氏矩陣中查詢乙個數,根據楊氏矩陣的特點(陣列的每行從左到右是遞增的,每列從上到下是遞增的),所以在查詢的時候(為保證時間複雜度小於o(n))i 的初始值為 0; j 的初始值為 col - 1;在i和j滿足i= 0的情況下,對陣列進行查詢;若當前數字大於data那麼,j–;若當前數字小於data那麼,i–;直到找到為止,若找到,則輸出該數所在行列(在這裡,以使用者的角度看,行列都從1開始),若沒找到,則輸出沒找到
查詢部分的函式:
int
search
(int a[n]
[n],
int row,
int col,
int data)
//查詢乙個數字是否存在,時間複雜度小於o(n)
printf
("\n ");
}return1;
}else
if(a[i]
[j]>data)
else
if(a[i]
[j]< data)
}return-1
;}
執行結果:找到要查詢的數字:
未找到要查詢的數字:
完整**:
#include
#include
#pragma warning(disable:4996)
#define n 3
intsearch
(int a[n]
[n],
int row,
int col,
int data)
//查詢乙個數字是否存在,時間複雜度小於o(n)
printf
("\n ");
}return1;
}else
if(a[i]
[j]>data)
else
if(a[i]
[j]< data)
}return-1
;}void
main()
;printf
("請輸入你想查詢的數字 > ");
scanf
("%d"
,&n)
;printf
("\n");
int result =
search
(a,n,n,n);if
(result ==1)
else
printf
("\n");
system
("pause");
}
C語言 在楊氏矩陣中查詢乙個數
題目 有乙個二維陣列,陣列的每行從左到右是遞增的,每列從上到下是遞增的。在這樣的陣列中查詢乙個數字是否存在?要求 時間複雜度小於o n 例 陣列 1 2 3 4 5 6 7 8 9 解題思路 首先我們肯定不能用常規的依次遍歷來查詢,這樣做時間複雜度不滿足題目要求 那麼我們應該從何處下手呢?首先我們來...
判斷數X是否在矩陣中
原題 資料結構與演算法分析c 描述 第三版 練習2.27 問題描述 n n矩陣,每一行從左到右增加,每一列從上到下增加。給出o n 最壞情形演算法決定是否數x在該矩陣中。1 include2 include3 include4 include5 6using namespace std 78 int...
在C 中實現矩陣運算
在c 中實現矩陣運算 環境 主機 xp 開發環境 vs2008 功能 在c 中實現矩陣運算 源 using system using system.collections.generic using system.componentmodel using system.data using syst...