c - 根据包含索引的另一个数组的内容对 C char 数组进行排序

标签 c

我目前有 2 个数组:

char A = {"Hello", "Hello2", "Hello3", "Hello4"}
int B = {3, 2, 0, 1};

B 数组中的每个索引位置都对应于 messages 数组中的相同索引位置。例如 "Hello" 需要位于位置 3,"Hello2" 需要位于位置 2,"Hello3" 需要位于位置 0并且 "Hello4" 需要位于位置 1。

期望的输出:

char aSorted = {"Hello3", "Hello4", "Hello2", "Hello"};

因此,我需要一个排序算法,可以根据BA进行排序。我真的很难理解这个问题,并且想知道是否有人可以给我一个在 C 中执行此操作的解决方案。请记住,我的 A 和 B 数组可能每个都有 256000 个值,因此它应该是最佳的。谢谢。

最佳答案

#include<stdio.h>

main(argc,argv)
const char** argv;
{
        char chararray[4]={'H','I','J','K'};
        int indexarray[4]={3,2,0,1};
        char newchararray[4];
        for(int i=0;i<4;i++) {
                newchararray[i]=chararray[indexarray[i]];
        }
        for(int i=0;i<4;i++) {
                printf("%c ",newchararray[i]);
        }
        printf("\n\n");
        return 0;
}

还有一件事,如何将这样的字符串放入 char 数组中? 更具体地说,我的编译器 cc 给出了

error: excess elements in char array initializer
  char chararray[4]={"H","I","J","K"};
                         ^

关于c - 根据包含索引的另一个数组的内容对 C char 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58471177/

相关文章:

c - c中的随机字符

c - Tab 完成和部分完成

c - Pthread 屏障和树莓派

c - 在基于 C 的编程难题中调试 switch 语句

当函数结束并且程序返回主函数时,即使它使用指针,对函数中字符串数组所做的更改也会全部丢失

c - 正则表达式没有返回正确的解决方案

javascript - 如何在编译为WebAssembly的Rust库中使用C库?

c - 从中断处理程序内部启动线程

c - 在 ubuntu 上读取、写入、更新 pci 卡上的 eeprom

c - for循环中的动态内存分配