用python 求一个数组中最大的三个元素及其所在位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python 求一个数组中最大的三个元素及其所在位置相关的知识,希望对你有一定的参考价值。

其实问题原型为:

a=11,b=2,c=145,d=19,e=90,f=34,g=9
求最大的三个值。要求返回的不是数字,而是a,b,c,d,e,f,g中被赋最大三个值的字母。

要求用Python来写。

谢谢!

参考代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FindMaxWithIndex

/// <summary>
/// 有一个数组,每个元素的值都是实数,请写出求最大元素的值及其位置的算法
/// </summary>
class Program

static void Main(string[] args)

double[] Num = new[] -8, 4543.9, 4543.9, 3, 45, 654.7, 7, 66, 35, 45, 4, 6, 4543.9, 5, 46, 54, 6, 43, 5.980, 34, 4543.9 ;
//double[] Num = new [] 1.0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ;

int[] index = SearchMaxWithIndex(Num);

Console.WriteLine("The max number is: 0", Num[index[0]]);
Console.Write("The index of max number is:");

for (int i = 0; i < index.Length; i++)

if (index[i] == -1) break;
Console.Write(" \'0\'", index[i]);


Console.ReadKey();


private static int[] SearchMaxWithIndex(double[] arr)

int[] pos = new int[arr.Length]; //记录最大值所在位置的数组

int position = 0; //初始设定数组的第1个元素为最大值

int j = 1;//j指示位置数组pos的下标

for (int i = 1; i < arr.Length; i++)

if (arr[i] > arr[position])

position = i; //记下新的最大值的位置
j = 1; //位置数组pos的下标恢复为1,下标为0的位置为position预留

else if (arr[i] == arr[position])
pos[j++] = i; //记下重复最大值的位置


pos[0] = position; //位置数组pos的下标为0的位置为position预留

if (j < arr.Length) pos[j] = -1; //-1为标识值,表示位置数组pos下标为0, 1, 2…(j-1)的位置存放的是最大值所在的位置

return pos;


参考技术A #!/usr/bin/env python
a = [('a', 11), ('b', 2), ('c', 145), ('d', 19), ('e', 90), ('f', 34), ('g', 9)]
a.sort(key = lambda x: x[1], reverse = True)
for i in range(3):
print(a[i][0])追问

for 循环:
(某些运算)
计算a-g的值
比较a-g的大小,输出被赋最大三个值的字母。

每次循环都要计算一次a-g的值,然后比较大小。
这种情况下怎么生成“a = [('a', 11), ('b', 2), ('c', 145), ('d', 19), ('e', 90), ('f', 34), ('g', 9)]“这样的矩阵?
谢谢

哦,我知道怎么办了。
谢谢~

本回答被提问者采纳
参考技术B 通过Python的内置函数可以轻松求取一个数组中最大的三个元素及其所在位置。具体实现方式如下:

```python
import numpy as np

# 定义一个数组
arr = np.array([14, 25, 3, 16, 25, 11, 37, 17])
# 使用argsort函数获取数组的升序排列索引
arr_sort_idx = arr.argsort()
# 获取数组中最大的3个元素的索引
max_idx = arr_sort_idx[-3:]

# 输出最大的三个元素及其所在位置
print("数组中最大的三个元素为:", arr[max_idx])
print("最大的三个元素所在位置为:", max_idx)
```

这样,就可以通过Python的numpy库以及内置函数,轻松地求取一个数组中最大的三个元素及其所在位置了。
参考技术C 可以使用Python中的字典和sorted函数来解决这个问题。具体实现如下:
values = 'a': 11, 'b': 2, 'c': 145, 'd': 19, 'e': 90, 'f': 34, 'g': 9

# 对字典按照值进行排序
sorted_values = sorted(values.items(), key=lambda x: x[1], reverse=True)

# 取出前三个键
result = [x[0] for x in sorted_values[:3]]

print(result) # 输出 ['c', 'e', 'd']

首先,将字母和对应的值存储在一个字典中。然后,使用sorted函数对字典按照值进行排序,将结果存储在一个元组列表中。最后,取出排序后前三个元素的键,即为最大的三个值对应的字母列表。
参考技术D 你可以使用 Python 中的字典来实现这个功能,将每个字母作为键,对应的数字作为值进行存储。然后,使用 Python 内置的 `sorted` 函数按照值进行排序,取最大的三个值并输出它们所对应的键即可。

以下是一个示例代码:

```python
# 定义输入数组
a = 11
b = 2
c = 145
d = 19
e = 90
f = 34
g = 9

# 将字母和对应的数字存储到字典中
d = 'a': a, 'b': b, 'c': c, 'd': d, 'e': e, 'f': f, 'g': g

# 按照值进行排序,返回包含键值对的元组的列表
sorted_dict = sorted(d.items(), key=lambda x: x[1], reverse=True)

# 输出前三个键值对
for i in range(3):
print(sorted_dict[i])
```

运行上述代码会输出最大的三个值及其所在位置,结果如下:

```
('c', 145)
('e', 90)
('f', 34)
```

其中,第一个元素表示键,第二个元素表示值,按照值从大到小排列。因此,最大的三个值分别为 145、90 和 34,对应的字母分别为 c、e 和 f。

分治理法求数组最大值

如今给出一个n个元素的书组,元素个数n。须要求出最大最小值.

方法1.

用max,min。分别记录数组最大最小值,顺序扫描数组,不断替换更新max。min,(max,min的初始值都为数组中的第一个元素)

方法2.

1.假设数组中仅仅有一个元素。那么它是最大也是最小值

2.否则数组中多于一个数。则能够求出左边的最大最小值,右边的最大最小值.然后该区间的最大值是max(lmax,rmax),最小值是min(lmin,rmin)

详细例如以下(n个数字由随机生成).

#include <stdio.h>
#include <time.h>
int getmax(int a,int b){
        return a>b?a:b;
}
int getmin(int a,int b){
        return a<b?

a:b; } void print(int a[],int n){ int i; for(i=0;i<20;i++) printf("%d ",a[i]); printf("\n"); } void maxmin(int a[],int l,int r,int * _max,int * _min){ if(r>l){ int m=(l+r)/2; int _lmin,_rmin,_lmax,_rmax; maxmin(a,l,m,&_lmax,&_lmin); maxmin(a,m+1,r,&_rmax,&_rmin); *_max=getmax(_lmax,_rmax); *_min=getmin(_lmin,_rmin); }else{ *_max=*_min=a[l]; } } int creat(int a[],int n,int m){ int i; srand(time(NULL)); for(i=0;i<n;i++) a[i]=rand()%m-m/2; return n; } int main(){ int n,i; int a[100]; int _min,_max; creat(a,20,100); print(a,20); maxmin(a,0,19,&_max,&_min); printf("max:%d min:%d\n",_max,_min); return 0; }

以下是几次执行的结果.

技术分享

以上是关于用python 求一个数组中最大的三个元素及其所在位置的主要内容,如果未能解决你的问题,请参考以下文章

编写一个函数findmax( ),求数组中最大元素及其下标。调用该函数求整型数组a中的最大元素及其下标。

求一个一维数组中第二大的元素,及其在原数组中的下标。

求问php两个二维数组中每个元素的相加

python编写程序,利用元组作为函数的返回值,求系列类型的最大值、最小值和元素个数

C语言程序设计:求二维数组中最大元素值及其行列号

编写函数,返回在一个整数组中出现次数最多的数及其出现次数。