哈希表并对其进行排序,仅显示n个最高值

用户名

输出格式如下:

  0.8765432
  0.7654323
  1.0987234
.......

我必须得到这样的结果:

1    1.0987234
2    0.8765432
3    0.7654323
...

我写了下面的脚本来将我的数据存储在哈希表中并对其进行排序。我必须基于该值对它进行排序(降序)并仅提取n个最高值(键和值)。

    if (sc >= 0 && sc <= 89395)
                    {
                        for (int z = 0; z <= 1143600; z++)
                        {
                            dotproduct(sc, z); // is a function to multiply to float
                            hashtable.Add(z, result);
                        }
                        SortedDictionary<int, float> dict = new SortedDictionary<int, float>(hashtable);
                        dict.OrderByDescending(x => x.Key).Take(n);
                        foreach (int key in dict)
                        {
                            System.Console.WriteLine(String.Format("{0}: {1}", key, dict[key]));
                        }
                    }

我有两个问题:

  1. 我用来做哈希表和排序的方法正确吗?
  2. 如何提取n个最高值来显示?
马库斯

根据您的评论,我建议您也可以使用简单的方法List<float>(如果dotproduct的结果为浮点型)。ASortedDictionary<int, float>没有意义,因为您只插入循环的索引和dotproduct的结果。因此,aList<float>具有相同的目的,并且需要较少的内存。如果以后想知道第3次运行的结果,只需访问列表的索引器即可,如var resultFor3rdRun = list[2]

在编写时,原始索引在输出数据时很重要。您必须先存储此索引。您可以使用Select提供索引的Linq扩展方法的重载来执行此操作然后,您可以按降序对它们进行排序,并获取要显示的项目数(例如,前10个):

if (sc >= 0 && sc <= 89395)
{
    var results = new List<float>(1143600); // Specify number of items upfront for better performance
    for (int z = 0; z <= 1143600; z++)
    {
        results.Add(dotproduct(sc, z)); // is a function to multiply to float
    }
    foreach(var resultWithIndex in results
        .Select((x, index) => new { Result = x, Index = index})
        .OrderByDescending(x => x.Result)
        .Take(10))
    {
        System.Console.WriteLine(String.Format("{0}: {1}", 
            resultWithIndex.Index, 
            resultWithIndex.Result));
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在shell中对csv进行排序,并仅保留最高值

从表中选择多个第n个最高值

N 个最高值的 Torch argmax

如何按每个组的最高值对组进行排序

按嵌套列表的最高值对字典进行排序

按最高值对数组中的对象进行排序

按最高值排序

比较 3 个值 - 显示最高值

查找其属性在其容器中具有最高值的子元素,然后按最高编号对容器进行排序

如何对表中的每一列进行排序并在SQL中显示每列中的最高值?

检索表中的两个最高值

从表中获取 3 个最高值

如何对 1000 行文件中的每 20 行进行排序,并仅将每个间隔中具有最高值的排序行保存到另一个文件中?

如何仅显示与 r 中折线图中前 4 个最高值对应的日期

仅当满足条件时才返回n个匹配结果,从最高值到最低值

消除python列表中的n个最高值

Pyspark-分组并选择N个最高值

打印 HashMap 中第 N 个最高值的键

获取ndarray中N个最高值的索引

获取numpy数组中N个最高值的索引

numpy排序并删除最高值

Postgres SELECT DISTINCT,仅最高值

函数仅读取最高值 swift

如何从最低值到最高值对多行进行排序?

如何显示多个项目,但仅显示每个项目的年份和月份的最高值?

从哈希图中获取 5 个最高值,同时保留插入顺序

用指定模式的最高值对文件中的行进行排序

对于每一行,按最高值对列名进行排序

ORACLE SQL 开发 | 仅选择一个具有最高值的重复行