C#实现冒泡排序和插入排序算法

C#实现冒泡排序和插入排序算法

冒泡排序算法

冒泡排序算法是一种基本的排序算法,其基本思想是通过对相邻的元素进行比较和交换,逐渐把待排序的元素交换到相应的位置上。

在C#中,实现冒泡排序非常简单,代码示例如下:

public static void BubbleSort(int[] arr)
{
    int len = arr.Length;
    for (int i = 0; i < len - 1; i++)
    {
        for (int j = 0; j < len - 1 - i; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                int temp = arr[j + 1];
                arr[j + 1] = arr[j];
                arr[j] = temp;  
            }
        }
    }
}

代码中给出了一个静态方法 BubbleSort ,该方法接受一个整数数组作为输入,按照冒泡排序的方法排序这个数组。具体实现中,用两层循环嵌套,外层循环控制排序的趟数,内层循环实现元素交换。通过比较相邻元素的大小,如果前面的元素大于后面的元素,则交换它们的位置。每趟排序可以确定一个最大值,将最大值放到最后的位置,排序趟数共(len-1)次即可完成排序。

下面给出一个示例,演示如何使用 BubbleSort 方法来对一个整数数组进行排序:

int[] arr = { 5, 1, 6, 2, 4, 3 };
BubbleSort(arr);
foreach (int a in arr)
{
    Console.Write(a + " ");
}

输出结果为:1 2 3 4 5 6,说明该方法能够正常工作并正确排序整数数组。

插入排序算法

插入排序算法是另一种基本排序算法,其基本思路是将一个待排序的元素插入到已经排好序的序列中,从而得到一个包含这个元素的排好序的新序列。

在C#中,实现插入排序也非常简单,代码示例如下:

public static void InsertionSort(int[] arr)
{
    int len = arr.Length;
    for (int i = 1; i < len; i++)
    {
        int j = i - 1;
        int temp = arr[i];
        while (j >= 0 && arr[j] > temp)
        {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = temp;
    }
}

代码中给出了一个静态方法 InsertionSort ,该方法接受一个整数数组作为输入,按照插入排序的方法排序这个数组。具体实现中,使用一个外层循环,从数组第二个元素开始遍历,用一个临时变量temp保存当前正在排序的元素。内层循环中,嵌套一个while循环,不断地将前面有序部分的元素往后移动,如此一来可以与当前正在排序的元素temp比较。如果前面有序部分的元素比temp大,则将这个元素向后移动一位。当找到一个比temp小的元素时或循环到了数组的开头时,将当前的temp元素插入到这个位置上,插入就完成了。循环执行,直到i=len-1时,数组就已经排好序了。

下面给出一个示例,演示如何使用 InsertionSort 方法来对一个整数数组进行排序:

int[] arr = { 5, 1, 6, 2, 4, 3 };
InsertionSort(arr);
foreach (int a in arr)
{
    Console.Write(a + " ");
}

输出结果为:1 2 3 4 5 6,说明该方法能够正常工作并正确排序整数数组。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现冒泡排序和插入排序算法 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 图解Java中归并排序算法的原理与实现

    图解Java中归并排序算法的原理与实现 什么是归并排序 归并排序是一种经典的排序算法,它的基本思想是通过将待排序序列不停地划分成两个子序列,将每个子序列排序后再将其合并,直到最终合并为一个有序的序列。 归并排序的原理 划分过程 首先将待排序序列分为两个长度相等的子序列,然后对每个子序列进行排序。 合并过程 合并两个有序的子序列,生成一个有序的子序列。重复此过…

    算法与数据结构 2023年5月19日
    00
  • JS实现根据数组对象的某一属性排序操作示例

    下面是JS实现根据数组对象的某一属性排序操作的完整攻略。 1. 问题背景 在前端开发中,我们经常会遇到需要对数组对象按照某一属性进行排序的问题。比如,我们有一个包含多个学生信息的数组对象,每个学生对象都有学号、姓名、成绩等属性,我们希望按照成绩从高到低对学生进行排序,以便于进行查找和展示。 2. 定义排序函数 针对上述问题,我们需要定义一个排序函数,实现按照…

    算法与数据结构 2023年5月19日
    00
  • php数组冒泡排序算法实例

    让我们来详细讲解一下“PHP 数组冒泡排序算法实例”。 什么是冒泡排序? 冒泡排序算法是一种基于比较的排序算法,它重复地遍历要排序的列表,比较相邻的两个元素,如果它们的顺序错误,就将它们交换位置。这个过程直接比较相邻元素,每一轮都将最小的元素放到序列的开头,就像气泡不断上升一样,因此得名冒泡排序。 基本的冒泡排序实现方法 下面是一个基本的实现方法,用 PHP…

    算法与数据结构 2023年5月19日
    00
  • 深入了解javascript 数组的sort方法

    深入了解JavaScript数组的sort方法 简介 在JavaScript中,数组(Array)是一个非常常用的数据结构,而sort()是Array原型上的非常常用的方法,可用于排序。数组中的元素可以是任何类型,但在排序时,所有元素都将转换为字符串形式,所以有时打算对不同数据类型的元素进行排序,您可能需要使用自定义比较函数。 基本使用方法 sort()方法…

    算法与数据结构 2023年5月19日
    00
  • JS折半插入排序算法实例

    下面是介绍JS折半插入排序算法的完整攻略。 什么是折半插入排序算法? 折半插入排序是插入排序的一种改进算法,它的基本思路是利用二分查找找到某个待排元素在已排序序列中插入位置。 折半插入排序算法的时间复杂度为 O(nlogn),比普通插入排序 O(n^2)快。 折半插入排序算法实现步骤 折半插入排序算法的实现步骤如下: 从第二个元素开始,将整个序列分为已排序区…

    算法与数据结构 2023年5月19日
    00
  • 2019年京东前端工程师面试题(附答案)

    本次将会以京东前端工程师面试题为例,详细讲解如何准备和应对前端岗面试。 第一步:了解面试整体流程和考察的技能点 在准备面试前,需要先了解面试的整体流程和所考察的技能点,从而根据需要和缺点来进行有针对性的准备。 面试的整体流程一般包括: 自我介绍和岗位广告 聊聊项目和技术栈 问题解答和技术评测 算法/编码能力测试 HR面试 而在前端工程师的岗位面试中,考察的技…

    算法与数据结构 2023年5月19日
    00
  • c语言冒泡排序和选择排序的使用代码

    下面是冒泡排序和选择排序的使用代码攻略。 冒泡排序和选择排序的使用代码 在C语言中,冒泡排序和选择排序都是经典的排序算法。本文将分别介绍它们的使用代码,以供参考。 冒泡排序 冒泡排序的基本思路是,相邻的元素两两比较,大的往后移,小的往前移,最终实现升序或降序排列的算法。 下面是一个简单的C语言冒泡排序的代码示例: #include <stdio.h&g…

    算法与数据结构 2023年5月19日
    00
  • PHP抽奖算法程序代码分享

    关于“PHP抽奖算法程序代码分享”的完整攻略,我将会从以下方面进行讲解: 什么是抽奖算法? 如何设计抽奖算法? 实现代码分享及示例说明 什么是抽奖算法? 抽奖算法是指通过一定的算法,实现在一些参与者中选出一个或几个”幸运儿”的过程。 如何设计抽奖算法? 抽奖算法设计的主要目的就是为了确保公平,同时符合某些要求。在比较公平的情况下,抽奖过程也应该是越来越具备娱…

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部