在樣式矩陣中查數(C語言)

2021-09-29 17:23:57 字數 1670 閱讀 7264

題目描述:

楊氏矩陣

有乙個二維陣列.

陣列的每行從左到右是遞增的,每列從上到下是遞增的.

在這樣的陣列中查詢乙個數字是否存在。

時間複雜度小於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...