【问题标题】:Sorting a string in an array C对数组C中的字符串进行排序
【发布时间】:2013-09-22 18:42:17
【问题描述】:

我正在实现一个将所有字谜一起打印的代码。现在我被卡住了,我不知道如何前进。

我想做的是:

给定一个数组str[]={"cat","dog","tac",god"}

我创建了一个数组dup[]str[] 相同。

现在我对现在变成{"act ","dgo","act","dgo"}的重复数组进行排序

在这里我找到相同元素的索引,即 0 和 2 && 1 和 3

在原始数组中,我将索引 0 和 2 一起打印,1 和 3 一起打印,

现在我不知道如何在不更改索引的情况下对字符串进行排序。

【问题讨论】:

标签: c string algorithm sorting


【解决方案1】:

这里最简单的方法是计算每个单词的哈希值并将其存储在辅助数组中。之后,遍历辅助数组并显示具有相同值的项。例如。

int i=0;
char hash[i][256];
for (i=0; i<n; i++) {
   hash[i] = calculate_hash(str[i]);
}
int j=0;
for (i=0;i<n; i++) {
   for (j=i+1; j<n; j++) {
     if (strcmp(hash[i], hash[j] == 0) {
        printf ("%s %s", str[i], str[j]);
    }
   }
}

我的 C 有点生疏,但我认为它掩盖了这个想法。

【讨论】:

    【解决方案2】:

    你已经完成了一半:在对字符 strings 中的字符进行排序之后,你再次“以常规方式”对这个列表进行排序——按字母顺序。然后所有字谜按顺序出现:"act","act","dgo","dgo"。但是,通过这种排序,您会失去与原始数组的联系。

    不要将单词存储到单个字符数组中,而是创建一个简单的结构。在此您还添加了原始索引,因此在排序后您可以检索它们。

    【讨论】:

      猜你喜欢
      • 2012-08-31
      • 2012-09-13
      • 1970-01-01
      • 2011-08-14
      • 2016-07-18
      • 2015-01-16
      相关资源
      最近更新 更多