c - 对字符进行排序而不替换

标签 c algorithm sorting

尝试对 C 中的字符串中的字符进行排序。对它们的 ASCII 代码进行排序。我尝试了冒泡排序和选择排序方法。

char stroka[]="This programmator";
int n=17,tmp;

for (int i=n-1;i>=0;i--)
    for (int j=n-2;j>=0;j--)
        if(stroka[j]>stroka[j+1])
        {
            tmp=stroka[j];
            stroka[j]=stroka[j+1];
            stroka[j+1]=tmp;
        }
printf("%s",stroka);

这个分配一切都很好:

char stroka[]="This programmator";

但它失败了

char *stroka="This programmator";

因为该算法编辑 protected 数组。 我可以创建另一个堆值,例如

char *stroka_new= malloc(17);

并在那里写入排序数组。它不 protected 。 如何使其按新值排序?也许有人知道不替换值的排序算法?

最佳答案

一种方法是strdup()原始字符串并对结果进行排序(不要忘记在最后释放它)?

关于c - 对字符进行排序而不替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442461/

相关文章:

c - 如何在 Mac 上使用 C I/O 重定向?

c - 代码哪里错了?

凯撒密码缺陷

c++ - 如何使用 vector (类)创建 find() 函数

sorting - Smalltalk:按两个标准对集合进行排序

c - 读取数据文件并保存到C中的数组

c - c中的霍尔快速排序

c++ - 找到循环系统中两个值之间最小差异的最佳方法?

python - 在 Python 中解析、聚合和排序文本文件

java - 从 arraylist<Object> 中删除重复的字符串