Go实现一个在一个数组中找到三个元素乘积最大的元素

//一个数组中有大于0,等于0,小于0 的元素,
//实现一个算法,找到三个元素相乘是最大值的三个元素

package main

import "fmt"

//一个数组中有大于0,等于0,小于0 的元素,
//实现一个算法,找到三个元素相乘是最大值的三个元素

func insertSort(arr []int) []int {
	for i := range arr {
		preIndex := i - 1
		current := arr[i]
		for preIndex >= 0 && arr[preIndex] > current {
			arr[preIndex+1] = arr[preIndex]
			preIndex -= 1
		}
		arr[preIndex+1] = current
	}
	return arr
}

//对数据进行判断
func paresArr(arr []int) []int {
	length := len(arr)
	if length <3{
		return arr
	}
	fmt.Println(length)
	var newArr []int
	if arr[0] > 0 {
		newArr = append(newArr, arr[length-3], arr[length-2], arr[length-1])
	} else if arr[length-1] <= 0 {
		newArr = append(newArr, arr[length-3], arr[length-2], arr[length-1])
	} else{
		sum1 := arr[0] * arr[1] * arr[length-1]
		sum2 := arr[length-3] * arr[length-2] * arr[length-1]
		fmt.Println(sum1, sum2)
		if sum1 > sum2 {
			newArr = append(newArr, arr[0], arr[1], arr[length-1])
		} else {
			newArr = append(newArr, arr[length-3], arr[length-2], arr[length-1])
		}
	}
	return newArr
}

func main() {

	//s1 := []int{6,8,3,-9,-6,0,7} //[-9 -6 0 3 6 7 8]

	//s1 := []int{0,-9,-4,-6,-2,-8}
	//s1 := []int{0, -9, -4, -6, -2, -8}

	s1 := []int{-9,-30,0,3,4,2,10,69}
	//先排序
	new := insertSort(s1)
	fmt.Println("排序后的数组:", new)
	//对数组的元素进行判断
	new1 := paresArr(new)
	fmt.Println(new1)
}

  

posted @ 2021-01-27 09:45  pebblecome  阅读(150)  评论(0)    收藏  举报