gpt4 book ai didi

c - 如何使用以下规则集对这个特定的字符串数组进行排序(?):

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:12 25 4
gpt4 key购买 nike

是的,我是新手,我叔叔挑战我使用该功能:

void sortStrings(char str[], const char* delim){...}

对给定的字符数组 str 进行排序,使 delim 中出现在 str 中的每个字符都将分隔一组字符在 str 中,从而使它们成为您需要按十六进制值排序的词。在此过程中,我还需要将 delim 中的字符分隔符替换为“;”。

规则是:我只能使用图书馆 <stdio.h>而且我不能使用 malloc/realloc。显然这应该用 n^2 的 O 符号来完成(n 是 str 中的单词数量,而不是字符)

这是一个输入和输出的例子:

输入:

char str[] = "aaa*test,hello.world*abcd.zzz";sortDelim(str, ",.*")

输出: str 现在是:“aaa;abcd;hello;test;world;zzz”

好吧,我现在终于成功了,冒泡排序的东西有点帮助所以 tyvm :)注意:如果有人想自己接受这个挑战,我会把这个话题留在这里?这并不容易,我保证 :P 如果你认为我应该删除它或添加完成的代码,那么就问问(请不要再扣我的代表 >><)

最佳答案

您的开端不错。在你的第二个 for 循环之后你有

  1. 将所有分隔符替换为分号
  2. 你知道有多少个字,size
  3. 你知道每个单词有多少个字母,letters

一个观察结果是您已将 letters 分配为 1000 个条目。这似乎足够了,但真的如此吗?你怎么知道 str 中有多少个单词?你不知道。而且您不能使用 malloc 进行动态分配,所以也许您需要寻找一种不需要该查找表的算法?您需要一种能够就地

工作的算法

http://en.wikipedia.org/wiki/In-place_algorithm

下一步是什么?您需要对单词进行排序。排序算法有很多种。您想要一些简单的东西,并且允许复杂度为 O(n^2)。这是排序算法的列表:

http://en.wikipedia.org/wiki/Sorting_algorithm

请注意,在表中的“其他注释”下,它告诉您某些算法是“微小的代码大小”,这听起来不错。首先按“其他注释”对表格进行排序,然后按“平均”复杂性排序(单击列标题中的三角形)。您现在有两个算法使用方法“交换”(这意味着 就地),具有 Tiny code size 和平均复杂度 O(n^2),这些维基百科链接解释它们是如何工作的,并包括pseudocode让你开始:

挑选并尝试一下。

提示:您可能需要一个子例程,如果第一个单词比第二个单词大,则交换(交换)两个连续的单词。这可以就地完成。

假设你有

abcd;aaa

第一个词大于第二个词,你需要检测到这一点,然后交换词,这样你就结束了

aaa;abcd

这是一张图表,可以让您了解总体思路。

enter image description here

关于c - 如何使用以下规则集对这个特定的字符串数组进行排序(?):,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22752468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com