45. 编程实现二分查找算法。二分(折半)查找(搜索)算法如下:
数组 a 中的 n 个数从大到小(降序)的顺序排列,要检索一个数 x 是否在 a 中,
折半查找算法的思路是:
设查找区间为[lower, upper],初值 lower=0, upper=n-1; 算法步骤:
(1)输入数组 a 的元素及 x;
(2)x 是否为 a 的第一或最后一个元素。若是其中之一,算法结束;
(3)将区间两等分为[lower, mid]和[mid, upper],mid 为区间中点,每次取出中间项进
行检查,若 x=a[mid],x 被检索到,算法结束;若 x<a[mid],则在后半区间 [mid, upper]
内重复折半检索;若 x>a[mid],则在前半区间 [lower, mid] 内重复折半检索。反复执行上
述步骤,使 lower 和 upper 相等或相差 1(表示未检索到 x),或 a[mid]=x。
46. 编程实现查找矩阵中最大元素的位置。要求输入一个矩阵中所有元素,输出该矩阵,
并输出矩阵中最大数所在的行、列号及该元素的值。
47. 编写程序找出二维整形数组中所有这样的元素及其位置:它在所在的行上是最大的,
在所在的列上也是最大的。设数组中的元素各不相同。(提示:先在第 i 行中寻找此行
最大值元素,记下其行和列,然后在其所在的列判断它是否也是最大的,若是则输出
结果。可以引入标志变量表示找到这个元素。)
48. 编程产生下列数组,并输出。
1 2 3 4 5 6
2 3 4 5 6 0
3 4 5 6 0 1
4 5 6 0 1 2
5 6 0 1 2 3
6 0 1 2 3 4
49. 编程产生下列数组,并输出
1 2 3 4 5 6
2 1 2 3 4 5
3 2 1 2 3 4
4 3 2 1 2 3
5 4 3 2 1 2
6 5 4 3 2 1