C語(yǔ)言二維數(shù)組中的查找的實(shí)例
C語(yǔ)言二維數(shù)組中的查找的實(shí)例
題目描述:在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請(qǐng)完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù),判斷數(shù)組中是否含有該整數(shù)
思路描述:一個(gè)數(shù)字的下方和右方是比它本身大的區(qū)域,而左方和上方時(shí)比它本身小的區(qū)域。選取右上角的數(shù)字進(jìn)行比較,當(dāng)該數(shù)大于指定的數(shù)時(shí),舍去該列,當(dāng)該數(shù)小于指定的數(shù)時(shí),舍去該行,當(dāng)相等時(shí),則表示找到
C語(yǔ)言實(shí)現(xiàn):
#include<stdio.h>
#include<stdlib.h>
typedef unsigned int boolean;
#define MAX 4
#define TRUE 1
#define FALSE -1
void showAry(int ary[MAX][MAX]);
boolean find(int ary[MAX][MAX], int rows, int cols, int number);
void showAry(int ary[MAX][MAX]) {
int i = 0, j = 0;
for(; i < MAX; i++) {
j = 0;
for(; j < MAX; j++) {
printf("%d ", ary[i][j]);
}
}
}
boolean find(int ary[MAX][MAX], int rows, int cols, int number) {
int i = 0,
j = cols - 1,
n = 0;
boolean result = FALSE;
if(ary == NULL || rows <= 0 || cols <= 0) {
return result;
}
while(i < rows && j >= 0) {
n = ary[i][j];
if(number == n) {
printf("\nary[%d, %d] = %d\n", i, j, n);
result = TRUE;
break;
}else if(number < n) {
j -= 1;
}else if(number > n) {
i += 1;
}
}
return result;
}
//1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15
int main() {
int ary[MAX][MAX];
int i = 0, j = 0;
for(; i < MAX; i++) {
j = 0;
for(; j < MAX; j++) {
scanf("%d", &ary[i][j]);
}
}
showAry(ary);
find(ary, MAX, MAX, 7);
}
以上就是講解C語(yǔ)言二維數(shù)組中的查找的實(shí)例,希望能幫助需要同類型問題的朋友,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- 關(guān)于C語(yǔ)言一維數(shù)組算法問題詳解
- C語(yǔ)言一維數(shù)組初步學(xué)習(xí)筆記
- 關(guān)于C語(yǔ)言中的指針與二維數(shù)組
- C語(yǔ)言二維數(shù)組指針的概念及使用
- C語(yǔ)言與java語(yǔ)言中關(guān)于二維數(shù)組的區(qū)別
- 從頭學(xué)習(xí)C語(yǔ)言之二維數(shù)組
- C語(yǔ)言面試C++二維數(shù)組中的查找示例
- C語(yǔ)言二維數(shù)組幾種常用的表示方法
- C語(yǔ)言 指針與二維數(shù)組詳解
- 直觀理解C語(yǔ)言中指向一位數(shù)組與二維數(shù)組的指針
- C語(yǔ)言中的一維數(shù)組與二維數(shù)組的實(shí)現(xiàn)
相關(guān)文章
C++ 漢諾塔問題知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是關(guān)于C++ 漢諾塔問題知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以參考下。2020-02-02
udp socket客戶端和udp服務(wù)端程序示例分享
這篇文章主要介紹了udp socket客戶端和udp服務(wù)端程序示例,需要的朋友可以參考下2014-03-03
C語(yǔ)言中如何實(shí)現(xiàn)單鏈表刪除指定結(jié)點(diǎn)
這篇文章主要介紹了C語(yǔ)言中如何實(shí)現(xiàn)單鏈表刪除指定結(jié)點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
C語(yǔ)言深入探究動(dòng)態(tài)規(guī)劃之線性DP
線性動(dòng)態(tài)規(guī)劃,是較常見的一類動(dòng)態(tài)規(guī)劃問題,其是在線性結(jié)構(gòu)上進(jìn)行狀態(tài)轉(zhuǎn)移,這類問題不像背包問題、區(qū)間DP等有固定的模板,線性動(dòng)態(tài)規(guī)劃的目標(biāo)函數(shù)為特定變量的線性函數(shù),約束是這些變量的線性不等式或等式,目的是求目標(biāo)函數(shù)的最大值或最小值2022-04-04
C++基本用法實(shí)踐之移動(dòng)語(yǔ)義詳解
移動(dòng)(move)語(yǔ)義是C++引入了一種新的內(nèi)存優(yōu)化,以避免不必要的拷貝,下面小編就來(lái)和大家簡(jiǎn)單聊聊C++中移動(dòng)語(yǔ)義的相關(guān)使用吧,希望對(duì)大家有所幫助2023-07-07

