将查找的位置定位到最右上角的元素,如果这个元素比要查找的元素小row++;如果这个元素比要查找的元素大 column–;
bool Find(int *a,int rows,int cols,int value)
{
int row = 0;
int col = cols - 1;
bool find = false;
if (a != NULL && rows > 0 && cols > 0)
{
while (row < rows && cols >= 0)
{
if (a[row * cols + col] < value)
{
row++;
}
else if (a[row * cols + col] > value)
{
col--;
}
else
{
find = true;
break;
}
}
}
return find;
}
找到行列递增矩阵的中位数
int findMedian(int *array,int row,int col)
{
int *arr = new int[row];
memset(arr,0,sizeof(int) * row); // 数组置0,用于保存每一列的中位数
for(int i = 0;i<row;i++)
{
int mid1 = array[i * (col /2)];
int mid2 = col & 1?mid1:array[i * ((col / 2) -1)];// 是奇数就是mid1,否则mid2 = mid1-1
arr[i] = (mid1 + mid2) >> 1;
}
int mid1 = arr[row / 2];
int mid2 = row & 1 ? mid1:arr[(row/2)- 1];
return (mid1 + mid2) >>1;
}