首页 > 解决方案 > 如何在名称/字符串数组上实现冒泡排序以在 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();

    }

标签: c#stringalgorithmsortingbubble-sort

解决方案


逻辑是一样的,唯一不同的是使用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))


推荐阅读