C# - 对基元数组进行排序并跟踪其索引的最快方法

2024-02-15

我需要一个float[]待排序。我需要知道旧索引在新数组中的位置。这就是为什么我不能使用Array.Sort();管他呢。因此,我想编写一个函数来对数组进行排序,并记住它从哪个索引获取每个值:

float[] input  = new float[] {1.5, 2, 0, 0.4, -1, 96, -56, 8, -45};
// sort
float[] output; // {-56, -45, -1, 0, 0.4, 1.5, 2, 8, 96};
int[] indices; // {6, 8, 4, 2, 3, 0, 1, 7, 5};

数组的大小约为 500。我应该如何处理这个问题?什么排序算法等


After solved: It always surprises me how powerful C# is. I didn't even though of it being able to do that task on it's own. And since I already heard that Array.Sort() is very fast I'll take it.

float[] input = new float[] { 1.5F, 2, 0, 0.4F, -1, 96, -56, 8, -45 };
int[] indices = new int[input.Length];
for (int i = 0; i < indices.Length; i++) indices[i] = i;
Array.Sort(input, indices);
// input and indices are now at the desired exit state

基本上,2 个参数的版本Array.Sort将相同的操作应用于both数组,运行实际的sort对第一个数组进行比较。这通常以相反的方式使用 - 按所需的索引重新排列某些内容;但这也有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# - 对基元数组进行排序并跟踪其索引的最快方法 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 使用反射和枚举进行 MVC 应用程序访问的逻辑控制是否安全?

    Trying to manage access to a web site I created some necessary entities 目标是为我的 MVC 应用程序的某些控制器的操作方法使用自定义权限属性 Permissions
  • redis:备份dump.rdb

    Context 我有一个正在运行的 redis 服务器 我想做一个备份 Idea 我想做以下事情 cp dump rdb some other location 06 24 2012 rdb Concern 我没有看到任何东西向我承诺 du
  • 使用 ExecutorService 时出现 CancellationException

    我想等待两个任务完成然后返回它们的结果 但有时我会收到此错误 为什么 CancellationException从哪里来 public class ShouldVoteTask extends AbstractWorkerTask
  • python -m 用于预提交

    pip3 install pre commit gt 已安装 我都试过了python3 m pre commit version and pre commit version 它说找不到模块 我正在使用 Pycharm 并从 Github
  • Appium - 创建会话 - 错误:应提供 JSONWP 或 W3C 功能

    我无法让 Appium 启动 Android 会话 并且在网上搜索时没有找到与我收到的错误消息相关的任何内容 当我运行测试时 Appium 转储此日志 debug MJSONWP Calling AppiumDriver createSes
  • 用于在 Google 表格中进行多次查找和替换的 Google Apps 脚本

    关于 Stack Exchange 的第一个问题 希望它有意义 一些背景 我在学校环境中工作 并协助学习支持人员为某些学生创建更易读的时间表 他们从我们的网站复制时间表数据 其中包含科目代码 教师姓名和房间号 它的格式与您在下图中看到的格式
  • AngularJS 和怪异模式:IE8+ 上的空白屏幕

    我正在开发一个 Angular 项目 该项目将包含在我无法控制的 HTML 页面中 实际上我只能访问里面的内容元素 有许多限制并不容易处理 1 我无法更改文档类型 2 我无法删除此元标记 3 应用程序必须加载 XML 文件 我设法克服了第
  • 如何在 Eclipse-Helios JDT 中专门抑制“比较相同表达式”

    我尝试用注释封闭方法 SuppressWarnings compareIdentical 但这不起作用 更糟糕的是 注释会产生自己的结果 Unsupported SuppressWarnings compareIdentical 警告 我知
  • Xcode源代码控制查看历史修改文件失败

    I used Xcode要连接的源代码控制SVN服务器 查看源代码后 我执行了commit update 一切正常 但是当我点击源代码控制 gt 历史记录 然后单击 显示修改的文件 然后显示一个警报对话框 源代码管理操作失败 因为找不到工作
  • 如何与本机桌面 (win) 应用程序建立对等连接

    我需要与本机桌面 win 应用程序和网络浏览器建立对等连接 只是为了传输原始数据 从理论上讲 WebRTC 似乎是实现这一目标的唯一方法 如果您想使用 WebRTC 在浏览器和桌面之间交换数据 您可以使用此库将桌面部分编码为 C 语言 ht
  • 在 Android Activity 中从软件键盘监听 Webview 按键事件

    是否可以在 Android 主机应用程序中处理来自 Web 视图的软件键盘事件 例如 我的应用程序的 Activity 是否可以侦听显示 Google 网站的 Web 视图的搜索字段中键入的内容 考虑到下面描述的方法 如果我覆盖它返回 tr
  • 如何在 Python 中使用递归反转列表?

    我想要一个函数 它会使用递归返回给定列表的相反内容 我怎样才能做到这一点 将列表的第一个元素附加到反向子列表 mylist 1 2 3 4 5 backwards lambda l backwards l 1 l 1 if l else p
  • XML 解析使用但元素名称是动态的

    Simple XMLElement Object IpStatus gt 1 ti pid 20642 gt SimpleXmlElement Object 我有一个上面格式的 SimpleXMLElment 这个 XML 是在运行时生成的
  • Sailsjs 是否可以构建更复杂的模型

    我想在我的模型中包含数组或集合 这对于水线 mongoDB 来说是可能的吗 周围还有其他选择吗 example name Bundle col1 name anOtherModel subCol text aString col2 name
  • 在大表上使用 LIKE 操作时 MySQL 查询速度慢

    我有一个相当大的表 6 GB 并且在此查询上遇到性能问题 SELECT f TIME FORMAT f scheme H i as scheme TIME FORMAT f actual H i as actual DATE FORMAT
  • 获取 Matplotlib 绘图标签坐标

    我想访问图中的所有标签坐标 例如 我画两条线并显示图例 import matplotlib pyplot as plt plt plot 1 2 label first image plt plot 2 1 label second ima
  • 如果第一个元素是异常,为什么引发元组有效?

    我很难弄清楚这一点 它是关于在 Python 2 7 中引发异常时可能发生的错误 try raise 1 2 3 4 except Exception as ex print ex 这里的消息是 异常必须是旧式类或派生自 BaseExcep
  • Iron Router 数据触发 3 次

    我在 Router Config 上设置了一个带有加载模板的路由器 Router onBeforeAction loading this route clients path clients template clientsAll wait
  • 设置日期标头以降低 SpamAssassin 分数

    我使用了测试服务 verifier port25 com 来检查从我的 PHP 脚本发送电子邮件时发生的情况 由于某种原因 即使启用了 SPF 和 DKIM 它们最终还是出现在我的 GMail 垃圾邮件文件夹中 事实证明 SpamAssas
  • C# - 对基元数组进行排序并跟踪其索引的最快方法

    我需要一个float 待排序 我需要知道旧索引在新数组中的位置 这就是为什么我不能使用Array Sort 管他呢 因此 我想编写一个函数来对数组进行排序 并记住它从哪个索引获取每个值 float input new float 1 5 2