首页 > 编程语言 >5.3 C#数组的基本操作与排序(数组赋值、最大最小值、冒泡排序、选择排序、Array类排序)

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

时间:2024-10-10 09:20:08浏览次数:3  
标签:Console WriteLine int 冒泡排序 数组 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:这是最简单也是最推荐的方式,因为它高效且易于使用。
  • 冒泡排序:它简单但效率较低,适用于小数据集。
  • 选择排序:它也简单但效率不高,同样适用于小数据集。

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

标签:Console,WriteLine,int,冒泡排序,数组,array,排序
From: https://blog.csdn.net/Argonaut_/article/details/142753131

相关文章

  • 算法笔记(十五)——BFS 解决拓扑排序
    文章目录拓扑排序课程表课程表II火星词典拓扑排序有向无环图(DAG图)有向无环图指的是一个无回路的有向图AOV网:顶点活动图在有向无环图中,用顶点表示一个活动,用边来表示活动的先后顺序的图结构拓扑排序找到一个先后顺序,结果可能不唯一如何拓扑排序?找到一......
  • 初始vector——数组的高级产物
    前言:C++标准模板库(STL)是现代C++编程的基石,其中的容器、算法和迭代器为开发者提供了高效、灵活的数据处理工具。vector作为STL中最常用的顺序容器,不仅支持动态数组的功能,还通过自动内存管理和丰富的操作接口,极大简化了数据操作的复杂性。无论是在日常开发还是算法竞赛中,v......
  • 基于C语言的排序
    排序的概念:排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]......
  • 有序数组的平方
    实际上需要考虑的是两个数组的按序合并,思路还是双指针法,很容易想到合并后数组的最大值只会在最左边或者最右边,而去掉这个元素后也是一样的操作。因此左指针从负数的最大值即最左边开始,右指针从正数的最大值即最右边开始,比较后更新位置。这里需要想清楚的是结束条件,实际上更新位置......
  • java Gzip将json压缩成byte数组
    `importorg.apache.commons.lang3.StringUtils;importjava.io.*;importjava.nio.charset.StandardCharsets;importjava.util.Arrays;importjava.util.zip.GZIPInputStream;importjava.util.zip.GZIPOutputStream;publicclassTestController{publicsta......
  • 【数据结构与算法】排序算法
    3.7排序算法概述比较排序算法算法最好最坏平均空间稳定思想注意事项冒泡O(n)O(n2n^2......
  • 排序算法之选择排序
    选择排序的思想是每次从未排序的部分中选择最小的元素,然后将其放在已经排序部分的末尾。遍历数组,从第一个元素开始,将其视为当前最小元素。在未排序的部分中,找到最小的元素,并记录其索引。将最小的元素与当前位置的元素交换位置重复步骤2和步骤3,直到遍历完整个数组比如有一......
  • java复制查询数组-cnblog
    java数组复制数组copyOf(待复制数组,复制后新数组的长度)如果复制后数组的长度,长于原来数组,多出来的元素会被补0,如果新数组元素少会从第一个元素,取到指定元素长度packagenb;importjava.util.Arrays;publicclasscopyOf_{publicstaticvoidmain(String[]......
  • 对UVM添加超时前的打印信息+AXI低功耗接口+process的await语句+对象当成参数+sv的单例
    对UVM添加超时前的打印信息首先获取到UVM的超时值,然后手动设定\$time的比较和while延时循环,当超出时间后,打印特殊的debug信息。$time<set_time,则进行循环。uvm_cmdline_processorclp;clp=uvm_cmdline_processor::get_inst();stringtimeout_settings[$];stringtimeout......
  • 八大排序--05堆排序
    假设数组arr[]={5,7,4,2,0,3,1,6},请通过插入排序的方式,实现从小到大排列:方法:①利用完全二叉树构建大顶堆;     ②对顶元素和堆底元素进行交换,除堆底元素之外其余元素继续构造大顶堆;     ③重复步骤②,直到所有元素都不参与构建,整个数组排序完成【完全......