excel找出最小的k个数(找出数组中最小的k个数)

Excel表格网 2022-11-05 11:00 编辑:admin 106阅读

1. 找出数组中最小的k个数

#defineN5 #include main() {inti,j,k,max,min;staticinta[5]; for(i=0;ia[i]){min=a[i];k=i;} } printf("max:a[%d]=%d,min:a[%d]=%d",j,max,k,min); }

2. 查找数组第k大的数

多数投票算法是一种用O(1)的空间复杂度,来求出数组中众数的算法:

其实这个算法十分好理解,最直观的说,我们要再数组中找到大于n/k的数,首先我们要明白一件事,举个例子,k=2,这时候,整个数组中比n/2还要多的数只有可能是一个,而k=3时,数组中比n/3还要多的数最多也只能有两个,同理可得,当为k的时候,数组中出现这种元素的个数最多只有可能有k-1个。

所以,到这里,我们可以设k-1个候选人,一个不同元素,每一个候选人都有一个自己的票数统计,如果下一个元素投票是跟某一个候选人相同,当前候选人的票数加一,如果都不相同,先判断候选人的票数有没有被清空,如果被清空,则更换候选人,票数置一,当然,如果候选人都为空,也只能更换一个候选人,一个人投票不可能当多个候选人,如果当前元素投票是与所有候选人无关,而且所有候选人都有票数,那就把当前投票抛弃,将所有候选人的票数减一。

遍历一遍数组过后,我们得到了最后的候选人名单,然而,是不是这些候选人都是呢?当然不确定,此时我们还要把他们的票数全部置零,然后再重新遍历一遍数组,重新真正的统计他们的票数,最后,如果有达到要求的,就压入数组。

当然,免得大家说我空谈,我就先写一个k=3的解法来阐述我上面的流程:

vector<int> findthree(vector<int> &nums){

int size=nums.size();

int result1=INT_MIN;

int result2=INT_MIN;

int count1=0;

int count2=0;

for(int i=0;i<size;i++){

if(result1==nums[i])

count1++;

else if(result2==nums[i])

count2++;

else if(count1==0){

result1=nums[i];

count1++;}

else if(count2==0){

result2=nums[i];

count2++;}

else{

count1--;

count2--;

}

vector<int> result_;

count1=count2=0;

for(int i=0;i<size;i++)

{

if(result1==nums[i])

count1++;

else if(result2==nums[i])

count2++;

}

if(count1>size/3) result_.push_back(result1);

if(count2>size/3) result_.push_back(result2);

return result_;

}

3. 找出数组中最小的k个数python

python中创建二维列表/数组,即创建一个list,并且这个list的元素还是list。可以用列表解析的方法实现。 创建例子如下: 2d_list = [[0 for col in range(cols)] for row in range(rows)]其中cols, rows变量替换为你需要的数值即可,例如: 2d_list = [[0 for col in range(9)] for row in range(9)] # 9*9的二维列表

4. 找出数组中第k小的元素

堆排序。建堆需要n/2次下沉操作,提取最小的k个元素需要k次下沉操作,复杂度小于O(n + klogn)。如果空间足够,可以采用基数排序,复杂度为O(n)。

5. 数组第k小

两种函数方法:

1、max()

返回一组值中的最大值。

语法

MAX(number1,number2,...)

Number1, number2, ... 是要从中找出最大值的 1 到 30 个数字参数。

说明

可以将参数指定为数字、空白单元格、逻辑值或数字的文本表达式。如果参数为错误值或不能转换成数字的文本,将产生错误。

如果参数为数组或引用,则只有数组或引用中的数字将被计算。数组或引用中的空白单元格、逻辑值或文本将被忽略。如果逻辑值和文本不能忽略,请使用函数 MAXA

来代替。

如果参数不包含数字,函数 MAX 返回 0(零)。

2、large()

返回数据集中第 k 个最大值。使用此函数可以根据相对标准来选择数值。例如,可以使用函数 LARGE 得到第一名、第二名或第三名的得分。

语法

LARGE(array,k)

Array 为需要从中选择第 k 个最大值的数组或数据区域。

K 为返回值在数组或数据单元格区域中的位置(从大到小排)。

说明

如果数组为空,函数 LARGE 返回错误值 #NUM!。

如果 k ≤ 0 或 k 大于数据点的个数,函数 LARGE 返回错误值 #NUM!。

如果区域中数据点的个数为 n,则函数 LARGE(array,1) 返回最大值,函数 LARGE(array,n) 返回最小值。

6. 找出其中最小的k个数

如果根结点的层次为1,高度为k的二叉树最小结点数为k,也就是一层只有一个结点。完全二叉树的意思:每层结点都完全填满,在最后一层上如果不是满的,则只缺少右边的若干结点。所以深度为k的完全二叉树,其节点最少的情况为最后一层只有最左边有一个叶节点,其余各层填满。这种情况下,总节点数为2^(k-1)-1 +1, 其中2^(k-1)-1为除最后一层外的节点总数。另外,这种计算方法认为只包含一个根节点的二叉树深度为1,有些书认为这种树深度为零,答案也会不一样。

7. 数组中最大的k个数

首先把数组的第一个数赋值给变量max和min,分别表示最大值和最小值,再依次判断数组的其他,判断当前的最大值和最小值是否就是最大值和最小值

8. 在无序数组中找最大的K个数

猴子代表乱的意思,猴子排序的意思就是乱排序,直到有序为止。

这个真实的含义就是把一个无序的数组进行乱排序,然后看其是否会有序,这是个概率性事件,有可能一次之后就有序了,也有可能很多次后依然无序。

实现方法如下:

1,定义数组

2,数组随机

3,检验数组是否有序,无序继续,有序了就停止

就是如此简单的实现思路,但是却要用到随机化的知识和标志变量的实现技巧

代码如下: //得到的数据是说明了排序多少次之后才有序

9. 找出一个数组中的最小值

1、打开visual studio,创建一个控制台应用程序,在Main方法中,定义一个整型数组,用于演示数组的最大值、最小值,以及交换他们的位置。

2、在Main方法中,定义四个变量,用于暂存最大、最小值,以及他们的序号。

3、通过for循环,找出数组中,最大的值和序号、最小的值和序号,存入上面定义的四个变量中。

4、最终通过数组的下标给最大、最小值重新赋值,就将他们交换位置了。在原来最小值的下标位置赋值找出来的最大值。原来最大值得下标位置赋值找出来的最小值。

5、在交换完成值之后,使用循环输出数组的值,从结果可以看出,这两个位置的值已经交换了位置。

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片