我必须按字母顺序对一组字符串进行排序,而不使用任何内置函数,然后在屏幕上打印它们。我已经尝试将字符串的第一个字符串转换为数字值,然后将此值与字符串的其他第一个字符串进行比较,但我不认为这是一个不错的选择。
((类似的)
TextViews
所以我想知道在没有任何功能的情况下按字母顺序排序多个字符串的简单方法。这是一项学校作业。
答案 0 :(得分:6)
由于这是一个家庭作业问题,我会给出一个启用答案,而不是实际的代码版本...
注意:您当然可以查找现有的排序算法并实现这些算法;但我个人更喜欢上述内容,因为它教会您自己思考,而不是将现有算法转换为您的特定编码语言。
进行比较时,请考虑您需要做什么。即你之前已经问过如何在比较它们之前将字符串中的字符转换为数字。是否需要这一步;你能不能简单地按字母顺序比较字符串? https://www.google.co.uk/search?q=c%23+compare+strings+alphabetically
在代码示例中,您提供的值为string1
和string2
,但您从未展示过他们的价值观'被分配...您是否需要为变量赋值,然后才能比较变量/何时以及何时进行这些分配?
你还有一个整数j
的循环被分配...你在哪里使用那个值/分配一个值是什么,除非你要使用它它?
同样,您有一个变量biggestFirstChar
,您可以为其指定一个值,但不要做任何事情。是否需要/你在哪里使用它?
您之后的结果是一个排序的值列表,您可以输出该值。你拿着那个结果在哪里/哪个代码按顺序输出结果?
您希望如何构建结果列表;即,您是否能够一次填充所有内容,或者您是否需要逐位修改它,直到所有项目都按顺序排列?
此外,将问题分解为块并测试每个块和/或考虑其影响。即。
Aardvark, Balloon
和Balloon, Aardvark
),确保无效。答案 1 :(得分:1)
您需要的是两种方法,即冒泡排序(或任何排序算法)和字符串比较算法。
你已经知道冒泡排序,所以我去进行字符串比较。
int Compare(string x, string y)
{
if(x == y) return 0;
if(x == null) return -1;
if(y == null) return 1;
int i = 0;
int length = x.Length <= y.Length ? x.Length : y.Length;
while(i < length)
{
if(x[i] > y[i]) return 1;
if(x[i] < y[i]) return -1;
i++;
}
if(x.Length == y.Length) return 0;
if(x.Length > y.Length) return 1;
else return -1;
}
只需在冒泡排序算法中使用此比较算法。
比较两个字符串
if(Compare(str1, str2) >= 0)
{
// str1 is bigger or equal
}
else
{
// str2 is bigger.
}