5.3 C#数组的基本操作与排序(数组赋值、最大最小值、冒泡排序、选择排序、Array类排序)


5.3.1 C# 数组对象的赋值

在C#中,数组是一种数据结构,用于存储固定大小的相同类型的元素集合。以下是两个示例,一个是使用循环给一维数组赋值,另一个是通过键盘输入给数组赋值。

例5-5:通过循环给一维数组赋值

using System;

class Program
{
    static void Main()
    {
        // 定义一个整型数组,长度为10
        int[] numbers = new int[10];

        // 使用for循环给数组赋值
        for (int i = 0; i < numbers.Length; i++)
        {
            // 这里简单地将数组的每个元素赋值为其索引值
            numbers[i] = i;
        }

        // 打印数组的元素
        foreach (int number in numbers)
        {
            Console.WriteLine(number);
        }
    }
}

例5-6:通过键盘输入给数组赋值

using System;

class Program
{
    static void Main()
    {
        // 定义一个整型数组,长度为10
        int[] numbers = new int[10];

        // 提示用户输入数组的元素
        Console.WriteLine("请输入10个整数,用空格分隔:");

        // 读取用户输入的一行文本
        string input = Console.ReadLine();

        // 使用Split方法将输入的字符串分割成字符串数组
        string[] inputNumbers = input.Split(' ');

        // 将字符串数组转换为整型数组
        for (int i = 0; i < numbers.Length && i < inputNumbers.Length; i++)
        {
            // 将字符串转换为整型并赋值给数组
            numbers[i] = int.Parse(inputNumbers[i]);
        }

        // 打印数组的元素
        foreach (int number in numbers)
        {
            Console.WriteLine(number);
        }
    }
}

在例5-6中,首先提示用户输入10个整数,然后使用Console.ReadLine()读取用户的输入。输入的字符串通过Split(' ')方法分割成字符串数组。接着遍历字符串数组,使用int.Parse将每个字符串转换为整数,并赋值给整型数组。

请注意,这里的代码没有进行错误处理,例如用户输入的不是整数或者输入的整数个数不足10个,所以在实际应用中需要添加适当的错误处理逻辑。

5.3.2 C#数组对象的输出

在C#中,输出数组对象可以通过遍历数组并打印每个元素来实现。以下是示例代码,展示了如何输出不同类型数组的内容。

例5-7:不同类型数组的输出

using System;

class Program
{
    static void Main()
    {
        // 整型数组
        int[] intArray = { 1, 2, 3, 4, 5 };
        // 浮点型数组
        float[] floatArray = { 1.1f, 2.2f, 3.3f };
        // 字符型数组
        char[] charArray = { 'A', 'B', 'C', 'D' };
        // 字符串数组
        string[] stringArray = { "Hello", "World", "C#" };

        // 输出整型数组
        Console.WriteLine("整型数组:");
        foreach (int value in intArray)
        {
            Console.Write(value + " ");
        }
        Console.WriteLine(); // 换行

        // 输出浮点型数组
        Console.WriteLine("浮点型数组:");
        foreach (float value in floatArray)
        {
            Console.Write(value + " ");
        }
        Console.WriteLine(); // 换行

        // 输出字符型数组
        Console.WriteLine("字符型数组:");
        foreach (char value in charArray)
        {
            Console.Write(value + " ");
        }
        Console.WriteLine(); // 换行

        // 输出字符串数组
        Console.WriteLine("字符串数组:");
        foreach (string value in stringArray)
        {
            Console.Write(value + " ");
        }
        Console.WriteLine(); // 换行
    }
}

在这个示例中,我们定义了四种不同类型的数组:整型数组intArray、浮点型数组floatArray、字符型数组charArray和字符串数组stringArray。然后,我们使用foreach循环遍历每个数组,并使用Console.Write方法打印出每个数组的元素。

  • Console.Write方法用于输出数据到控制台,但是不会自动换行。
  • Console.WriteLine方法用于输出数据到控制台,并在输出后添加一个换行符。

5.3.3 C#求数组中的最大(小)元素值

在C#中,要找到数组中的最大值和最小值,我们可以遍历数组并使用条件语句来比较元素。以下是示例代码,展示了如何求一个包含5个整数的数组的最大值和最小值。

例5-8:求数组中的最大值和最小值

using System;

class Program
{
    static void Main()
    {
        // 定义一个包含5个整数的数组
        int[] numbers = { 10, 20, 5, 35, 15 };

        // 初始化最大值和最小值
        int max = numbers[0];
        int min = numbers[0];

        // 遍历数组以找到最大值和最小值
        foreach (int number in numbers)
        {
            if (number > max)
            {
                max = number;
            }
            if (number < min)
            {
                min = number;
            }
        }

        // 输出最大值和最小值
        Console.WriteLine("最大值: " + max);
        Console.WriteLine("最小值: " + min);
    }
}

在这个示例中,我们首先定义了一个包含5个整数的数组numbers。然后,我们将数组的第一个元素分别赋值给变量maxmin,作为初始的最大值和最小值。

接下来,我们使用foreach循环遍历数组中的每个元素。在循环中,我们使用if语句来比较当前元素与maxmin。如果当前元素大于max,则将max更新为当前元素。如果当前元素小于min,则将min更新为当前元素。

最后,我们使用Console.WriteLine方法输出找到的最大值和最小值。

5.3.4 C# 数组排序

当然,让我们先从每个排序算法的概念和原理开始,然后我会提供C#代码示例来实现这些排序算法。

1. 使用Array类排序(例5-9)

概念与原理
在C#中,Array.Sort方法提供了一种简单的方式来对数组进行排序。它使用一种高效的排序算法(通常是快速排序、堆排序或插入排序的混合体),这取决于数组的大小和内容。Array.Sort方法可以对数组进行原地排序,这意味着它不需要额外的存储空间。

代码示例

using System;

class Program
{
    static void Main()
    {
        // 定义一个数组
        int[] array = { 2, 5, 4, 1, 3 };

        // 使用Array类的Sort方法进行排序
        Array.Sort(array);

        // 输出排序后的数组
        Console.WriteLine("排序后的数组:");
        foreach (int value in array)
        {
            Console.Write(value + " ");
        }
    }
}

2. 冒泡排序(例5-10)

概念与原理
冒泡排序是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

代码示例

using System;

class Program
{
    static void Main()
    {
        // 定义一个数组
        int[] array = { 2, 5, 4, 1, 3 };

        // 冒泡排序
        for (int i = 0; i < array.Length - 1; i++)
        {
            for (int j = 0; j < array.Length - 1 - i; j++)
            {
                if (array[j] > array[j + 1])
                {
                    // 交换元素
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }

        // 输出排序后的数组
        Console.WriteLine("冒泡排序后的数组:");
        foreach (int value in array)
        {
            Console.Write(value + " ");
        }
    }
}

3. 选择排序(例5-11)

概念与原理
选择排序是一种简单直观的排序算法。它的工作原理是每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。

代码示例

using System;

class Program
{
    static void Main()
    {
        // 定义一个数组
        int[] array = { 2, 5, 4, 1, 3 };

        // 选择排序
        for (int i = 0; i < array.Length - 1; i++)
        {
            int minIndex = i;
            for (int j = i + 1; j < array.Length; j++)
            {
                if (array[j] < array[minIndex])
                {
                    minIndex = j;
                }
            }
            if (minIndex != i)
            {
                // 交换元素
                int temp = array[i];
                array[i] = array[minIndex];
                array[minIndex] = temp;
            }
        }

        // 输出排序后的数组
        Console.WriteLine("选择排序后的数组:");
        foreach (int value in array)
        {
            Console.Write(value + " ");
        }
    }
}

在这些示例中,我们首先定义了一个包含5个整数的数组。然后,我们使用不同的排序算法对数组进行排序,并输出排序后的结果。

  • Array.Sort:这是最简单也是最推荐的方式,因为它高效且易于使用。
  • 冒泡排序:它简单但效率较低,适用于小数据集。
  • 选择排序:它也简单但效率不高,同样适用于小数据集。

每种排序算法都有其适用场景,了解它们的原理可以帮助你更好地选择适合特定问题的排序方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值