通过3(2/n)次比较同时找到数组最大和最小值(python)
2017-10-17 17:40
579 查看
def get_min_max(A): ''' Desc: 同时找到最小值和最大值 数量必须大于2 ''' #初始化结果数组[最小, 最大] result = [A[0], A[1]] if result[0]>result[1]: result[0],result[1] = result[1],result[0] #临时数组 tmp = [0, 0] #数组长度 n = len(A) #计算起始位置 if n%2==0: start_pos = 2 else: start_pos = 1 for i in range(start_pos, n, 2): #先进行比较 tmp = [A[i], A[i+1]] if tmp[0]>tmp[1]: tmp[0],tmp[1] = tmp[1],tmp[0] #最小与最小比较 if tmp[0]<result[0]: result[0] = tmp[0] #最大与最大比较 if tmp[1]>result[1]: result[1] = tmp[1] #返回 return result
A = [6,45,5,3,7,0] print(get_min_max(A))
一次性找到最小和最大, 需要比较(n/2)*3次
如果单独是max和min函数寻找需要比较2n次
相关文章推荐
- 在N个不同元素的数组A中,同时找到它的最大元素和最小元素,设A中的元素可以直接比较大小
- 一个数组中同时找到最大/最小值
- 算法8:一个整数数组里怎么同时找最大和最小的数,尽量优化比较次数
- 同时找到数组中的最小值和最大值
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。
- 通过函数求一组数组中最大最小的函数
- 同时寻找一个数组中的最大元素和最小元素--你会有所收获
- 子数组的最大和[算法]HDU1003/HDU1231/找到这些数使得它满足:它是左边的最大值且是右边的最小值
- 实验9 指针1 1、程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。
- 【算法导论】同时求数组的最大值和最小值
- 从数组中同时取出最大最小元素
- 同时找数组里的最大最小数——分治思想
- 同时寻找最大数和最小数的最优算法以及寻找最大的两个数所需的最少比较次数
- C语言:通过返回指针的形式找出数组的最大值和最小值
- 设一个长度为10的整型数组, 0)要求每个元素的值通过scanf输入,输入完成后, 1)请顺序输出这些整数, 2)请倒序输出这些整数, 3)输出这些数中的最大值, 4)输出这些数中的最小值
- 实验9(1)程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。
- 求一个数组中的最大值和最小值,要求将比较次数减小至3N/2
- 从一个数组中同时找出最大最小数-算法导论第九章
- 同时找出在数组中的最大值、最小值
- 关于在一个无序数组中的数求最大值和最小值的最小比较次数