您好,登錄后才能下訂單哦!
簡介
數組是一種比較簡單的數據結構,它占據一塊連續的內存并按照順序存儲數據。在創建時,需要先指定數組的容量大小,然后根據大小分配內存。因此數組的空間效率不是很好,經常會有空閑的區域沒有充分利用。由于數組內存是連續的,所以可以用下標訪問元素,時間效率比較高。
題目
在一個二維數組中,每一行都是按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排列,完成一個函數,輸入這樣一個二維數組和一個整數,判斷數組中是否含有該整數
1 2 8 9
2 4 9 12
4 7 10 13
6 8 11 15
查找數字7,返回true,查找5,返回false
分析:
程序實現
#include<iostream> #include<assert.h> using namespace std; bool Find(int *a, int rows,int cols,int element) { assert(a);//判斷不為空 assert(rows > 0 && cols > 0);//行和列不為空 bool ret = false; int row = 0; int col = cols - 1;//第一行最右 while (row < rows&&col >= 0) { if (a[row*cols + col] == element) { ret = true; break; } else if (a[row*cols + col]>element)//這個元素比這一列的這個元素小,說明在這一列的左邊 { --col;//縮小行的距離 } else//這個元素比這一列的元素大,說明在這一行的下邊 ++row;//向下 } return ret; }
測試
void test() { int a[][4] = { 1, 2, 8, 9, 2, 4, 9, 12, 4, 7, 10, 13, 6, 8, 11, 15 }; cout << Find((int*)a, 4, 4, 7);//1 cout<<Find((int *)a, 4, 4, 20);//0 }
這樣,就實現了在這個二維數組中查找一個元素的功能
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。