按字母顺序对字符串进行排序

问题描述 投票:0回答:3

我需要编写按字母顺序对字符串进行排序的程序。我怎样才能做到这一点?

c++ string sorting
3个回答
1
投票

使用

std::sort
(第二版)并编写一个比较函数,按字母顺序而不是按字典顺序比较字符。如果这必须处理 i18n/l10n 那么这个函数可能会更难编写。


0
投票

首先,请不要要求人们在这里做功课。不过,由于您已经掌握了大部分程序,我将给您一些提示:

首先你需要读入字符串,并以某种方式存储它们:

  • 字符串(体面的方法)
  • 数组(可能应该避免这些)
  • 向量(比数组更好的替代品)

现在您可以使用内置函数 std::sort (但我猜您不允许使用它,因为这是家庭作业)或自己编写一个排序函数。

考虑如何在字符串/数组/向量中搜索字母表中的特定字母(谷歌搜索“c++搜索字符串”会给你一些方法)并考虑大写、小写和标点符号的影响。

主要问题是计算机无法查看一个字母是否出现在另一个字母“之前” - 看看是否可以找到一种方法将字符转换为数字(提示:与 ASCII 表结合使用转换) .

这就是我要提供的所有信息,祝你好运!

编辑:关于排序方法的几句话

主要有以下几种排序方式:

  • 冒泡排序 - 按顺序遍历字符串,交换字母 顺序错误。一遍又一遍地重复此操作,直到字符串 已排序
  • 插入排序 - 对于每个字母,将其放入新数组/字符串/向量中的正确位置
  • 快速排序 - 将字符串分成两部分,比较两半,交换部分并重复

-1
投票

字符串按字母顺序进行比较。让我们花点时间记住,字符串归根结底是字符数组,并且还请记住,字符本身有一个数值,范围从小写“a”到大写“Z”,“a”是字母表中的最低值,大写 Z 为最高值。因此,在幕后,当使用比较运算符比较两个字符串时,您将两个数值相互比较,如果它们碰巧相同,则比较将与其字符串中的下一个字母进行比较。例如,如果按从低到高排序,“狗”将排在“娃娃”之前。

"dog" < "doll" //This will return true

现在,对于排序,我建议您在数据结构中查找排序方法,或者尝试自己想出一个知道如何比较字符串的方法。

© www.soinside.com 2019 - 2024. All rights reserved.