杨氏矩阵C++实现
何为杨氏矩阵?这个网上的介绍很多,下面给出杨氏矩阵搜索算法:
#include <iostream> using namespace std; // 杨氏矩阵查找算法 bool Yang_search(int arr[][4], int N, int k) { if (k<arr[0][0] || k>arr[N - 1][N- 1]) { cout << "此值必不在此数组内" << endl; return false; } // 从左下角元素查起 int col = 0; int row=N-1; while (row>=0&&col<=N-1) { if (k < arr[row][col]) row--; else if (k > arr[row][col]) col++; else { cout << "找到此值,在第" << row+1 << "行" << col+1 << "列" << endl; return true; } } if (row<0 || col>N - 1) { cout << "查无此值" << endl; } return false; } int main() { int arry[4][4]= {{ 1,5,7,9 },{ 4,6,10,15 },{ 8,11,12,19 },{ 14,16,18,21 }}; Yang_search(arry, 4, 15); system("pause"); return 0; }
比如查找15,结果为:
如果查找13,结果为:
如果查找22,结果为:
结束。