青岛做网站哪家公司好,邢台365生活网,ui设计好学吗,安徽做公司网站哪家好题目 有一个升序排列的数组#xff0c;数组中可能有正数#xff0c;负数或0. 求数组中元素的绝对值最小的数. 例如 数组{-10#xff0c; 05#xff0c; 02 #xff0c;7#xff0c;15#xff0c;50} 绝对值最小的是-2 解答 #include bits/stdc.h
using namespac…题目 有一个升序排列的数组数组中可能有正数负数或0. 求数组中元素的绝对值最小的数. 例如 数组{-10 05 02 71550} 绝对值最小的是-2 解答 #include bits/stdc.h
using namespace std;void f(int a[], int len) {if (a[len-1] 0) {cout abs(a[len-1]) endl;return ;}if (a[0] 0) {cout a[0] endl;return ;}// 有正有负int l 0, r len-1;while (l r) {int m (l r) / 2;if(a[m] 0) {cout a[m] endl;return ;} else if(a[m] 0) {if(a[m-1] 0) {int mn min(abs(a[m-1]), a[m]);cout mn endl;return ;} else if (a[m-1] 0) {cout 0 endl;return ;} else {// a[m-1] 0r m-1;}} else {// a[m] 0if(a[m1] 0) {int mn min(abs(a[m]), a[m1]);cout mn endl;return ;} else if(a[m1] 0) {cout 0 endl;return ;} else {// a[m1] 0l m1;}}}return ;
}int main()
{int a1[] {-10, -5, -2, 7, 15 ,50};int a2[] {2,4,6,8,27};int a3[] {-13, -9, -7, -3};int l1 6, l2 5, l3 4;f(a1, l1);f(a2, l2);f(a3, l3);return 0;
} 转载于:https://www.cnblogs.com/Draymonder/p/10703605.html