根据另一个数组的内容对 C 数组进行排序

2024-01-01

我正在尝试对数组进行排序A其元素是索引。索引引用另一个数组B其值将决定顺序A。所以,我想排序A这样B[ A[i] ]在增加。

例如:



A = [0, 1, 4, 5, 7]
B = [5, 3, 8, 2, 2, 7, 1, 6, 3, 9]
  

Sorted A将会



A' = [ 7, 4, 1, 0, 5 ]
  

这可以通过 C 的内置排序实现吗?还是我必须编写自己的实现?

编辑:这些数组是局部函数变量。


如果你想使用qsort,最好的做法是将 A 中的索引和 B 中的值重新包装到一个结构中,然后基于该结构的新数组创建一个比较器。例如:

typedef struct
{
    int index_from_A;
    int value_from_B;
} index_value_wrapper;

index_value_wrapper index_wrapper_array[5];

for (int i=0; i < 5; i++)
{
    index_wrapper_array[i].index_from_A = A[i];
    index_wrapper_array[i].value_from_B = B[A[i]];
}

int comparitor (const void* lhs, const void* rhs)
{
    return (lhs.value_from_B - rhs.value_from_B);
}

现在你可以运行qsort在结构数组上,您可以从那里提取原始数组所需的正确排序序列A无需使用自定义排序功能。

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

根据另一个数组的内容对 C 数组进行排序 的相关文章

随机推荐

  • C++“new”运算符是如何实现的

    Class B B b new B default constructor B b1 new B 10 constructor which takes an argument B int x 但是 如果我们想编写一个自定义版本new 语法是
  • 使用现有私钥创建 CSR

    我想做的是 创建一个 CSR 并使用受密码保护的私钥 密钥 在 OpenSSL 中 我可以创建一个带有密码的私钥 如下所示 openssl genrsa des3 out privkey pem 2048 有什么方法可以使用我刚刚创建的密钥
  • 使用 C# 调用 php 脚本 (Unity)

    我对 Unity 和 PHP 都很陌生 目前我正在开发一个项目 可以使用 PHP 将数据从 MySQL 数据库解析到 Unity 我最初想尝试启用一种方法 用户可以更改 php 脚本并使其能够选择不同的数据表 但是有人建议我列出 php 脚
  • 如何从 nginx 发出相对 URL 重定向?

    如何在 nginx 中配置重定向以相对重定向到特定路径来响应某个 url The Nginx 文档 https www nginx com resources wiki start topics tutorials config pitfa
  • Android中的动态相对布局

    我正在尝试将两个图像放在一起 我可以让它与 xml 文件一起正常工作 但我想动态地执行此操作 ctdeasyone 是一个透明图像 所以这工作正常
  • Git推送错误:无法创建'.git/refs/remotes/jr/master.lock':文件存在

    这不是重复的 我看过这个堆栈溢出帖子 https stackoverflow com questions 8500089 fatal unable to create refs heads master lock file exists f
  • Knockoutjs 验证 areSame 或 MustMatch 示例

    我正在尝试使用 GitHub 上的 Knockoutjs 验证插件 大部分似乎工作得很好 但是当我尝试使用扩展验证 MustEqual password confirm password 时 它似乎没有做任何事情 我缺少什么 我非常想学习这
  • 如何在SQLite中进行递归查询?

    如果我的数据结构是这样的 parentA parentAA parentAAA childA 如果我能得到 childA name 我怎样才能知道所有父级的名字直到顶层 所以它会像这样 gt parentA parentAA parentA
  • 如何从 Azure Function App 中的请求正文检索字节数据

    在 Python 中 我将图像转换为字节 然后 我将字节传递到 Azure HTTP 触发器函数应用端点 URL Azure 门户 就像调用 Azure 认知服务时一样 image path r C Users User Desktop b
  • NSURL、URL 和 NSData、数据

    我是斯威夫特的新手 当我遇到这个问题时 我正在从互联网上获取图像NSURL and URL and NSData and Data 我真的很困惑 我使用哪些 我使用了以下代码 但我必须转换类型 如下所示 这样做的正确方法是什么以及两者之间的
  • 避免测试时由于 readline() 造成的暂停

    我正在 R 中使用以下命令运行测试test dir 函数从testthat包裹 在一些测试脚本中 有一些函数调用readline 这在交互模式下会导致测试暂停并等待用户输入 调用的函数readline 不是我自己的 我对他们没有任何影响 用
  • 强制重新加载表视图

    All 当按下按钮时 如何强制每五秒重新加载一个表视图 在视图控制器内 持续十五秒 谢谢 詹姆士 首先 当您按下按钮时创建一个计时器 NSTimer timer NSTimer scheduledTimerWithTimeInterval
  • JQuery CORS 和重定向

    使用 JQuery 1 8 2 我正在从一个 AppServer 向应用程序发出 CORS 请求 Front 到另一个应用程序服务器 Back 服务器 当我进行以下 Ajax 调用时Front 来自的 302 响应 安全检查 Back很荣幸
  • 从 .tar.gz 将模块安装到 Anaconda

    当我想将模块安装到 Anaconda 时 我运行conda install 然而 现在我有一个 tar gz文件并想要安装它 怎么做 有多种方法可以实现此目的 我在这里描述一种方法 即使您的默认方法也应该相对简单python变量不是 ana
  • 更新应用商店错误 - 找不到启动故事板

    我的应用程序已在应用程序商店中发布 6 个月 我现在尝试发布更新 但在验证应用程序时遇到错误 找不到启动故事板 确保为 Info plist 中的键 UILaunchStoryboardName 指定不带文件扩展名的启动故事板文件名 我所做
  • 如何优化 TradingView Pine 脚本中的参数? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想优化 TradingView Pine 回测中的指标参数 这对于其他工具来说是可能的 但是当我在
  • 使用 ggplot 在 R 中绘制多个大型时间序列时出现问题

    我有一个包含 16 个独立时间序列的大型数据集 我想将它们绘制在 3x7 网格中 顶行是每个以 IN 结尾的时间序列 底行是每个以 OUT 结尾的时间序列 在中间行中 我将重复对应于每个 IN OUT 对的以 RN 结尾的两个时间序列中的每
  • PDOStatement 包含什么以及 fetch/fetchAll 有什么用?

    我无法理解 1 PDOStatement 对象内部有什么以及 2 为什么我需要 fetch 或 fetchAll 方法 我的数据库 一个名为 动物 的简单表 有 3 列 id 名称 物种 My code try pdo new PDO ds
  • Clang 格式换行符

    我正在寻找一个clang format设置以防止工具删除换行符 例如 我有我的ColumnLimit设置为 120 这是我重新格式化一些示例代码时发生的情况 Before include
  • 根据另一个数组的内容对 C 数组进行排序

    我正在尝试对数组进行排序A其元素是索引 索引引用另一个数组B其值将决定顺序A 所以 我想排序A这样B A i 在增加 例如 A 0 1 4 5 7 B 5 3 8 2 2 7 1 6 3 9 Sorted A将会 A 7 4 1 0 5 这