请编程实现一个冒泡排序算法?

冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

以下是使用C#实现的冒泡排序算法:

注意:需要理解引用类型的概念,会更清楚的理解下面代码

cs 复制代码
using System;

public class BubbleSort
{
    public static void BubbleSortAlgorithm(int[] array)
    {
        int n = array.Length;
        for (int i = 0; i < n - 1; i++)
        {
            for (int j = 0; j < n - i - 1; j++)
            {
                if (array[j] > array[j + 1])
                {
                    // 交换 array[j] 和 array[j + 1]
                    int temp = array[j];
                    array[j] = array[j + 1];//这里其实就是用到引用类型概念,把arry[j+1]位置下存放的值放到array[j]位置下
                    array[j + 1] = temp;
                }
            }
        }
    }

    public static void Main()
    {
        int[] array = { 64, 34, 25, 12, 22, 11, 90 };
        Console.WriteLine("Original array:");
        foreach (var item in array)
        {
            Console.Write(item + " ");
        }

        BubbleSortAlgorithm(array);

        Console.WriteLine("\nSorted array:");
        foreach (var item in array)
        {
            Console.Write(item + " ");
        }
    }
}

让我们逐步分析这段代码:

  1. int temp = array[j];
    • 这行代码创建了一个名为 temp 的整型变量,并将其初始化为 array[j] 的值。这意味着 temp 现在存储了索引为 j 的元素的值。
  2. array[j] = array[j + 1];
    • 接下来,这行代码将索引为 j + 1 的元素的值赋给索引为 j 的元素。此时,索引为 j 的元素的值被更新为原来索引为 j + 1 的元素的值,但索引为 j + 1 的元素的值仍然保留在内存中(尽管我们暂时不能直接访问它,因为它现在被 temp 变量保存了)。
  3. array[j + 1] = temp;
    • 最后,这行代码将 temp 变量的值(即原来索引为 j 的元素的值)赋给索引为 j + 1 的元素。这样,索引为 jj + 1 的元素就完成了交换。

这种交换元素的方法是数组操作中非常基本且常用的技术。它允许你在不增加额外数组空间的情况下,重新排列数组中的元素。然而,需要注意的是,如果 j 是数组的最后一个元素的索引(即 j 等于数组长度减一),那么 array[j + 1] 将是越界访问,因为数组的索引是从0开始的,并且最大索引是数组长度减一。因此,在使用这段代码时,需要确保 j + 1 不会超出数组的范围。

相关推荐
Frostnova丶1 分钟前
(11)LeetCode 239. 滑动窗口最大值
数据结构·算法·leetcode
GoCoding11 分钟前
YOLO-Master 与 YOLO26 开始
算法
VALENIAN瓦伦尼安教学设备15 分钟前
设备对中不良的危害
数据库·嵌入式硬件·算法
不熬夜的熬润之37 分钟前
APCE-平均峰值相关能量
人工智能·算法·计算机视觉
yzx99101339 分钟前
实时数据流处理实战:从滑动窗口算法到Docker部署
算法·docker·容器
佩奇大王1 小时前
P674 三羊献瑞
算法·深度优先·图论
发疯幼稚鬼2 小时前
大整数乘法运算
c语言·算法
励志的小陈2 小时前
数据结构Stack(C语言--用数组实现栈)
c语言·数据结构
宵时待雨2 小时前
C++笔记归纳17:哈希
数据结构·c++·笔记·算法·哈希算法
问好眼2 小时前
《算法竞赛进阶指南》0x05 排序-1.电影
c++·算法·排序·信息学奥赛