【问题标题】:Can I use a normal bubble sort to alphabetize a list?我可以使用普通的冒泡排序来按字母顺序排列列表吗?
【发布时间】:2019-01-21 06:31:58
【问题描述】:

我知道冒泡排序和选择排序对数字进行排序,但它也可以用单词来做吗?它可以按字母顺序排列列表吗?我制作了一个选择排序程序和冒泡排序,但不知道如何将其更改为使用单词。我需要制作一个程序,从用户那里接收带有数量的项目,并按字母顺序输出它们,同时仍然保持数字。我不是以任何方式要求整个程序,只是这个详细的帮助。我也知道它建议在此使用并行数组。请,谢谢!

void selectionSort(int arr[], int length)
{
int lowest = 0;
int temp;

//each time moving the lowest item

for(int i=0; i < length-1; ++i)
{
//goes through array once starting from "boundary"
lowest = i;
for(int j=(i+1); j < length; ++j)
{
  if(arr[j] < arr[lowest])
  {
    lowest = j;
  }
}
//swap 
temp = arr[i];
arr[i] = arr[lowest];
arr[lowest] = temp;
}
}

【问题讨论】:

  • 如果你可以为它定义一个比较运算符,那么任何排序算法都可以对它进行排序。我确实建议使用std::sortstd::vector,而不是尝试全部手写。 (和std::swap
  • 你需要了解字符串在 C 中是如何工作的。
  • 您可以对所有可以订购的东西进行排序。 “顺序”意味着有一个较少的谓词(例如重载operator&lt;)满足:1)如果a operator< 排序相似(比较字符的 ASCII 值)。但是,它不一定是在现实生活中有意义的顺序,当然这些都包括在内。例如。我曾经按位模式对浮点值进行排序,这足以满足我的需要。
  • 你需要一个排序教程。
  • 您只看到(并编写)对数字进行排序的实现的原因是它们提供了非常简单的示例,而不是您无法对其他任何内容进行排序。

标签: c++ sorting alphabetical


【解决方案1】:

你想要的代码是:

#include<vector>
#include<string>
#include<algorithm>

void f(std::vector<std::string> &v)
{
    std::sort(std::begin(v), std::end(v));
}

向量包含值并知道有多少元素正在使用。

字符串处理与字符串相关的所有内容,包括长度和排序。

排序具有实际算法(或多个)以尽可能高效地进行排序,比冒泡排序效率更高。

如果您想要默认排序以外的其他内容,可以将 lambda(或其他可调用)传递给排序函数。有关详细信息,请参阅 cppreference 上的示例。

所以实际上只有 1 行代码,出现错误的可能性很小。正确使用 C++ 可以让解决琐碎问题变得简单。

【讨论】:

    猜你喜欢
    • 2014-07-30
    • 2013-10-09
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2020-03-29
    • 2015-08-08
    相关资源
    最近更新 更多