c# - 如何在名称/字符串数组上实现冒泡排序以在 C# 中按字母顺序排序?
问题描述
所以我无法让冒泡排序算法在 C# 中的名称/字符串数组上工作,任何人都可以提供如何执行此操作的示例
我已经对一些整数做了,但似乎不能用名字做,我只是不知道怎么做
这是数字代码,它可以对整数进行排序,但我不知道如何使它适用于名称列表:
Random rnd = new Random();
int[] numbers = new int[10];
for (int i = 0; i < numbers.Length; i++)
{
numbers[i] = rnd.Next(1, 100);
}
Console.WriteLine("Array before sorting it: ");
foreach (var number in numbers)
{
Console.WriteLine(number + " ");
}
Console.WriteLine();
BubbleSort(numbers);
Console.ReadLine();
}
private static void BubbleSort(int[] numbers)
{
for (int i = 0; i < numbers.Length - 1; i++)
{
for (int j = 0; j < numbers.Length - 1; j++)
{
if (numbers[j] > numbers[j + 1])
{
int temp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = temp;
}
}
}
Console.WriteLine("the sorted array of numbers is: ");
foreach (var number in numbers)
{
Console.WriteLine(number + " ");
}
Console.WriteLine();
Console.ReadKey();
}
解决方案
逻辑是一样的,唯一不同的是使用CompareTo
方法。
public static void BubbleSort(String[] arr)
{
int length = arr.Length;
String temp;
for (int j = 0; j < length - 1; j++)
{
for (int i = j + 1; i < length; i++)
{
if (arr[j].CompareTo(arr[i]) > 0)
{
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
}
注意:此代码的复杂度为 O(N),因此如果您的目标是对数组进行排序,我建议您使用快速排序或合并排序(复杂度 O(LogN))
推荐阅读
- codeigniter - 我们可以在具有 ssl 的站点中修复来自 worldpay 的握手错误吗?
- reactjs - react-konva 在舞台中央设置形状
- html - 拉伸和居中嵌套的 2d flexbox 元素
- php - 为什么 PHP include_once 会成功但 require_once 在同一个文件上会失败?
- typescript - 在 React Native Typescript 中使用动画值
- apache-kafka - 如何从 kafka 中读取已经提交的消息
- sql-server - 如何在 sql server 的动态查询中检查 IS NULL
- flutter - 在 gridview 中加载大量数据时应用程序崩溃
- python - 基于 csv 字典创建多个目录 - python
- mysql - 不知道密钥时如何获取 MYSQL JSON 对象值?