字符串选择排序 C++
Posted
技术标签:
【中文标题】字符串选择排序 C++【英文标题】:String Selection Sort C++ 【发布时间】:2010-07-15 20:42:38 【问题描述】:如何修改 selectionSort 函数来搜索字符串数组?
void selectionSort (int array[], int size)
int startScan, min Index, minValue;
for (startScan = 0; startScan<(size-1); startScan++)
minIndex=startScan;
minValue=array[startScan];
for(int index = startScan + 1;index<size;index++)
if (array[index] < minValue)
minValue=array[index];
minIndex=index;
【问题讨论】:
你能再澄清一下这个问题吗?我想不出一种基于选择排序的搜索算法。 将代码格式化为更具可读性。但是,它没有字符串数组或单个字符串,因此仍然不清楚您的意思。 那是用来排序的函数。现在它是为整数配置的,我将如何将它更改为与字符串一起使用? 那不是排序函数;在 int 数组及其索引中找到最小值。 @David -- 它是排序的一部分; selsort 迭代地找到数组中的最小值,将其删除并放在结果数组的末尾。 【参考方案1】:据我了解您的问题,您需要将 ">" 推广到字符串 - 您显然可以使用一些库函数(对于 STL 字符串,>
已定义),但如果这是一个家庭作业,您可能在需要自己写。如果我们仅限于 ASCII,这非常简单,而字母的 ASCII 代码按字母顺序排列((int)'A'<(int)'B')
。
要比较字符串,您应该从两个字符串的第一个字母开始,如果它们不相等,则返回它们的比较结果,如果它们相同,则继续下一对。
【讨论】:
【参考方案2】:创建一个接受字符串数组的函子,并根据需要处理比较(如果是 STL)。
【讨论】:
【参考方案3】:运算符已经能够处理按字母顺序比较字符串。只需重载函数以在参数中使用字符串数组 [] 而不是 int 数组 []。一个问题是这些运算符区分大小写,因此您需要在进行检查之前将字符串中的所有字符转换为大写或小写。
【讨论】:
以上是关于字符串选择排序 C++的主要内容,如果未能解决你的问题,请参考以下文章