数组任意取三个数中乘积最大值
Posted junxing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组任意取三个数中乘积最大值相关的知识,希望对你有一定的参考价值。
一、给定一个整型数组,包括正负值,找出取任意三个值的乘积最大
1、对整型排序(这里使用堆排序)
//堆排序 private static void headSort(int arr[], int len) int s = len / 2; for (int i = s; i >= 0; i--) hSort(arr, i, len); for (int i = len; i >0 ; i--) swap(arr, 0 , i); hSort(arr, 0, i-1); private static void swap(int arr[], int s, int n) int t = arr[s]; arr[s] = arr[n]; arr[n] = t; private static void hSort(int arr[], int s, int len) int v = arr[s]; for (int i = 2 *s + 1; i < len; i*=2) if (i < len && arr[i] < arr[i+1]) i = i + 1; if (v >= arr[i]) break; arr[s] = arr[i]; s = i; arr[s] = v;
2、最大值只能是最小两个和最大一个或者最大三个值的乘积
private static int findMaxSub(int arr[], int len) return Math.max(arr[0] * arr[1] * arr[len-1], arr[len - 3] * arr[len - 2] * arr[len - 1]);
3、测试
public static void main(String[] args) int arr[] = -3, -5, -8, 0, 2, 4, 6; headSort(arr, arr.length - 1); System.out.println(findMax(arr, arr.length));
以上是关于数组任意取三个数中乘积最大值的主要内容,如果未能解决你的问题,请参考以下文章