求数组中a[j]/a[i]的最小值

数组int a[],元素个数为n,求a[j]/a[i]的最小值,其中0<i<j<n,时间复杂度要求为O(n)。

思路:a[i]的值应当尽量大,而且应该为j前面最大的那个,所以遍历数组的时候,每个元素都除以其前面的最大的那个元素而不用除以其前面的每一个元素。

 1 int maxnum(int a[], int n)
 2 {
 3     int max=a[0];
 4     int min_shang = 0;
 5     for (int j = 1; j <= n; j++)
 6     {
 7         min_shang = min_shang < a[j] / max ? min_shang : a[j] / max;
 8         max = a[j] > max ? a[j] : max;
 9     }
10     return min_shang;
11 }

 

posted @ 2020-05-07 00:06  江雨牧  阅读(215)  评论(0)    收藏  举报