按字母顺序排列字符串数组(甚至是 *ptr)

     2023-02-22     207

关键词:

【中文标题】按字母顺序排列字符串数组(甚至是 *ptr)【英文标题】:Arranging an array of strings (or even a *ptr) alphabetically 【发布时间】:2013-04-05 11:54:06 【问题描述】:

所以我已经阅读了大约五六篇关于如何重新排列数组的文章,其中一些按字母顺序排列,一些按数字排列,我还阅读了这一章。这就是我最终想出的,

void selectionSort (string array[], int size)

int startScan, minIndex;
string minValue;
for(startScan = 0; startScan<(size-1); startScan++)

    minIndex = startScan;
    minValue = array[startScan];
    string temp;
    for(int index = startScan+1; index<size; index++)
    if(array[index] <minValue)
    
        minValue = array[index];
        minIndex = index;
    

array[minIndex] = array[startScan];
array[startScan] = minValue;
system("pause");

显然,这是行不通的。当我运行它时,它向我抱怨需要打破它。我认为这会起作用,无论是 int 还是任何数字类型。哎呀,如果我将它设置为 char 类型的 ASCII 值,它甚至可能会运行。但实际的分配是一个字符串,我就是想不通。我曾想过尝试剪掉第一个字母并转换为 char 以按字母顺序排列,但有些字符串的姓氏相同但名字不同,所以这也行不通。

我需要解决什么问题才能让我的排序按字母顺序排列我的数组?

更新 更新了我在阅读 cmets 并重新回顾这本书后对代码所做的更改。运行代码时不再出现错误,但仍然无法排序!

【问题讨论】:

如果您所说的“呼喊”是指它给您一个错误,请显示该错误。 std::sort 有什么问题? 您需要做的是正确实现选择排序。您的代码甚至不是选择排序。将您编写的代码与真实的选择排序进行比较,例如en.wikipedia.org/wiki/Selection_sort @john 也不是任何其他类型的。 (他的代码是 O(n)。如果它真的实现了排序,那将是开创性的。) James - 什么都没有,除了我不允许在作业中使用它。哦,我明白这个问题对你来说显然很愚蠢,但没必要成为刻薄的朋友,我只是想学习:(约翰 - 我实际上已经读过,我理解排序的概念(我认为),我只是显然不明白如何实现它。 【参考方案1】:

所以由于某种原因你选择不使用 std,(你有交换和排序)

请注意:

  temp = array[count];
    array[count]=array[(count+1)]; <-- when count is exactly size -1 you are going to commit overflow to your array
    array[(count+1)] = temp;

您需要确保您的索引不会超出数组边界..:

for(int count = 0; count<size -1 ; count++)

(顺便看看 std::swap,可能更适合你使用)

【讨论】:

谢谢,当分配使用数组时,我总是提醒自己要小心数组边界,然后我对它感到沮丧并且有时会忘记。 :/ 我希望我可以使用 STD 交换,但任务是修改 selectionSort 代码以对字符串进行排序。【参考方案2】:

当您执行array[count + 1]count == size - 1)时,存在明显的越界问题。而且我看不到代码如何 将要对任何东西进行排序。你想用什么算法 用吗?

【讨论】:

【参考方案3】:

对于初学者,当您到达数组末尾时,您会得到一个索引越界异常。由于您正在访问 count+1,因此您的 for 循环需要在 size-1 处停止。这看起来像是冒泡排序的开始,但没有完全实现。对冒泡排序进行一些研究,您应该很快就会得到答案。

【讨论】:

感谢您让我注意到我正在尝试将冒泡排序与选择排序结合起来!诚然,我也遗漏了一些元素。

java示例代码_Android:如何按字母顺序排列特殊字符的数组列表

java示例代码_Android:如何按字母顺序排列特殊字符的数组列表 查看详情

用单词和数字按字母顺序排列字符串

】用单词和数字按字母顺序排列字符串【英文标题】:Alphabetizestringwithwordsandnumbers【发布时间】:2016-02-2706:11:35【问题描述】:我试图弄清楚如何对包含单词和数字的单个字符串进行字母排序。正如您在下面看到的,我尝试使用... 查看详情

按字母顺序排列的名称和描述列表

...母对应一个。在每个数组中,我都有一些列出菜系名称的字符串。我想为每种美食实施描述。我该怎么做?我应该把它放在哪里以保持plist的搜索能力、侧面有 查看详情

按字母顺序排列单词

】按字母顺序排列单词【英文标题】:Alphabeticallysortingthewords【发布时间】:2013-12-1409:48:41【问题描述】:我通过将单词的第一个元素的ascii与另一个单词进行比较来对单词进行排序。我使用结构存储和数组存储5个单词,然后使... 查看详情

在java中没有数组的按字母顺序对字符串进行排序

】在java中没有数组的按字母顺序对字符串进行排序【英文标题】:Sortastringinalphabeticalorderwithoutarraysinjava【发布时间】:2013-11-1401:41:10【问题描述】:我需要做的是获取一个包含随机字母的字符串,然后将这些字母按字母顺序排... 查看详情

按大写字母顺序排列字符串 C++

】按大写字母顺序排列字符串C++【英文标题】:Arrangingastringinuppercase-firstalphabeticalorderC++【发布时间】:2016-10-0315:31:02【问题描述】:我试图在C++中创建一个程序,该程序按字母顺序对给定字符串进行排序,其中大写字母在其等... 查看详情

使用 SQL 按字母顺序重新排列字符串中的字符 [关闭]

】使用SQL按字母顺序重新排列字符串中的字符[关闭]【英文标题】:RearrangethecharactersinastringalphabeticallyusingSQL[closed]【发布时间】:2013-10-3016:29:18【问题描述】:我正在寻找一个字符串字段并将字符重新排列成字母顺序。例如,如... 查看详情

按字母顺序排列的字符串

】按字母顺序排列的字符串【英文标题】:stringinalphabeticalorder【发布时间】:2014-08-2216:19:41【问题描述】:我正在尝试使用递归函数按字母顺序打印字符串,但它给出的字符串下标超出范围错误。stringalpha(stringword)chartemp;intcount=... 查看详情

通过迭代按字母顺序排列字符串

】通过迭代按字母顺序排列字符串【英文标题】:Arrangingastringalphabeticallybyiteration【发布时间】:2018-07-1416:47:53【问题描述】:我想我已经找到了按字母顺序排列字符串(ABCDE以任意顺序)的最小移动量。有一些条件必须遵守:... 查看详情

使java中的字符串按字母顺序排列?

】使java中的字符串按字母顺序排列?【英文标题】:Makeastringinjavabeorderedalphabetically?【发布时间】:2017-07-2300:18:02【问题描述】:我试图让一个人的名字按字母/反向字母顺序打印。到目前为止我有这个:Scannername=newScanner(System.in... 查看详情

输入的单词是不是按字母顺序排列?

...:我正在编写一个函数,该函数将返回true或false关于输入字符串是否按字母顺序排列。我收到了undefined,但不确定我错过了什么functionis_alphabetic(str)letresult=true;for(let 查看详情

带有名称和描述 numberOfRowsInSection 问题的按字母顺序排列的 plist

】带有名称和描述numberOfRowsInSection问题的按字母顺序排列的plist【英文标题】:AlphabeticalplistwithnameanddescriptionnumberOfRowsInSectionissues【发布时间】:2014-05-2816:36:21【问题描述】:所以,我有一个描述多种美食的plist。在我的plist中,... 查看详情

如何按字母顺序对字符串字符进行排序?

】如何按字母顺序对字符串字符进行排序?【英文标题】:Howtosortastring\'scharactersalphabetically?【发布时间】:2012-03-1620:52:19【问题描述】:对于数组,有一个漂亮的sort方法来重新排列元素的序列。我想为String实现相同的结果。例... 查看详情

MySQL - 首先按字母顺序排列字段,然后按小数顺序排列

】MySQL-首先按字母顺序排列字段,然后按小数顺序排列【英文标题】:MySQL-Orderfieldalphabeticallyfirstandthendecimally【发布时间】:2018-06-2516:34:50【问题描述】:我的数据库中有一个VARCHARname字段,其中包含表示软件版本号的字符和小... 查看详情

Java - 检查字符串的 ArrayList 是不是按字母顺序排列

】Java-检查字符串的ArrayList是不是按字母顺序排列【英文标题】:Java-CheckingifanArrayListofStringareinalphabeticalorderJava-检查字符串的ArrayList是否按字母顺序排列【发布时间】:2012-01-3112:06:56【问题描述】:我有一个名为account的ArrayList... 查看详情

2021-09-25:给定一个字符串数组,将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词指字母相同,但排列不同的字符串。示例1:输入:strs=[“eat“,“tea“,“(代码片段)

2021-09-25:给定一个字符串数组,将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词指字母相同,但排列不同的字符串。示例1:输入:strs=[“eat”,“tea”,“tan”,“ate”,“nat”,“bat”],输出:[... 查看详情

6.12按字母顺序排列字符串

问题:如下的结果集:+--------+|ename |+--------+|ALLEN ||WARD  ||MARTIN||BLAKE ||CLARK ||KING  ||TURNER||JAMES ||MILLER|+--------+需要结果如下:+--------+------------------ 查看详情

检查一个字符串的字母在另一个字符串中是不是按顺序排列

】检查一个字符串的字母在另一个字符串中是不是按顺序排列【英文标题】:checkiflettersofastringareinsequentialorderinanotherstring检查一个字符串的字母在另一个字符串中是否按顺序排列【发布时间】:2019-04-1708:11:05【问题描述】:如... 查看详情