顺序统计算法[2019.5.25]
题目: 给定数组A[0..n-1],试设计一个算法,在最坏情况下用n+logn次比较找出A[0..n-1]中元素的最大值和次大值。 输入:序列长度、数组A 输出:maxnum、cmaxnum Input: 7 1 2 3 4 5 6 7 Output: 7 6 思想: 用分治法将数组中的数分为两个序列,递归求出左右两个序列的lmax、lcmax、rmax、rcmax。同时比较一下,得出每次分出去的maxnum和cmaxnum,然后层层递归最后得到maxnum和cmaxnum。 Code: #include < bits / stdc ++. h > using namespace std ; int num [ 1001 ]; void maxcmax ( int i , int j , int & maxnum , int & cmaxnum ){ int lmax , lcmax , rmax , rcmax , mid =( i + j )/ 2 ; if ( i == j ) maxnum = cmaxnum = num [ i ]; else if ( i = j - 1 ){ maxnum = max ( num [ i ], num [ j ]); cmaxnum = min ( num [ i ], num [ j ]); }