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日

相关文章

  • JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例

    非常感谢你对于本站文章的关注。下面是针对文章“JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例”的完整攻略解析。 1. 介绍 本文主要讲解的是一种常用于解决路径搜索问题的算法—— A*寻路算法。使用该算法可以在搜索空间(如地图、游戏场景等)中找到一条最优路径,可应用于许多领域,如自动驾驶、游戏AI等。 2. 算法流程 该算法通过在搜索空间中创…

    算法与数据结构 2023年5月19日
    00
  • 用c语言实现冒泡排序,选择排序,快速排序

    首先我们来讲一下三种基本的排序算法——冒泡排序、选择排序和快速排序,并且给出实现的具体代码。 冒泡排序 冒泡排序是一个非常简单的排序算法,其基本思想是比较相邻两个数的大小,如果前一个数比后一个数大,就将两个数交换位置。通过不断重复这个过程,将最大的数“冒泡”到数组的最后面,这个过程类似于水泡在水中不断冒上来,因此得其名。 具体的实现代码如下: void bu…

    算法与数据结构 2023年5月19日
    00
  • Golang排列组合算法问题之全排列实现方法

    下面是对于“Golang排列组合算法问题之全排列实现方法”的完整攻略: Golang排列组合算法问题之全排列实现方法 什么是全排列 全排列,即在一组数的排列中,若任意两个数的位置不同,则称它们的排列是不同的。要求多少个不同的排列数,通常用全排列求解。 全排列实现方法 全排列的实现方式可以采用递归或迭代的方式。 递归实现方式 递归的思想是每次确定一个位置的数字…

    算法与数据结构 2023年5月19日
    00
  • TypeScript十大排序算法插入排序实现示例详解

    针对“TypeScript十大排序算法插入排序实现示例详解”的完整攻略,我有如下的描述和示例: 1. 算法简介 插入排序(Insertion Sort)是一种简单直观的排序算法。它的基本思想是将目标数组分为已排序和未排序区间,每次从未排序区间中选取一个元素并插入到已排序区间中正确的位置。 插入排序是一种相对基础的排序算法,不仅实现起来比较简单,而且时间复杂度…

    算法与数据结构 2023年5月19日
    00
  • 详解js数组的完全随机排列算法

    详解JS数组的完全随机排列算法 1. 算法原理 完全随机排列算法是指将一个数组中的元素完全随机地排列,使每个元素出现在每个位置的可能性相同。 算法的实现原理是: 从数组的最后一个位置开始依次向前遍历,对于每个位置i,随机生成一个介于[0,i]之间的整数j 将位置i上的元素与位置j上的元素交换 经过这样的遍历,整个数组就被完全随机排列了。 2. JS代码实现 …

    算法与数据结构 2023年5月19日
    00
  • Go归并排序算法的实现方法

    Go归并排序算法的实现方法 简介 归并排序(Merge Sort)是一种经典的分治算法,它将一个大问题分解为若干个小问题,通过递归将小问题排好序,最后再将小问题合并起来,得到排序的结果。 归并排序的最坏时间复杂度为$ O(nlogn)$,且具有稳定性,是较为优秀的排序算法之一。 实现方法 归并排序的实现分为两个步骤,分别是分解和合并: 分解 分解过程需要递归…

    算法与数据结构 2023年5月19日
    00
  • JS实现的合并两个有序链表算法示例

    下面为您详细讲解JS实现的合并两个有序链表算法示例的完整攻略。 什么是合并两个有序链表? 合并两个有序链表,顾名思义就是将两个有序链表合并成一个有序链表。具体实现过程是将链表A和链表B按照顺序依次比较,将较小的节点插入到一个新的链表C中,直至A、B中有一个链表被遍历结束,另一个链表中剩余的节点则直接插入到链表C的最后。 示例如下: 链表A 链表B 合并后的链…

    算法与数据结构 2023年5月19日
    00
  • C语言常见排序算法之插入排序(直接插入排序,希尔排序)

    接下来我将为大家详细讲解“C语言常见排序算法之插入排序(直接插入排序, 希尔排序)”。 直接插入排序 算法思路 直接插入排序算法的实现思路是:将一个无序的数据序列分为一个有序子序列和一个无序子序列两部分,将无序子序列的元素一个一个插入到有序子序列中,直到插入完所有元素,最终形成一个新的有序序列。在具体编写代码时,我们会将数据序列看作是一个数组来进行操作。 代…

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