C#经典面试题:冒泡算法的使用

发布时间:2023年12月20日

Hi i,m JinXiang


? 前言 ?

本篇文章主要介绍C#经典面试题:冒泡算法的使用以及部分理论知识


🍉欢迎点赞 👍 收藏 ?留言评论 📝私信必回哟😁

🍉博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言


目录

?什么是冒泡算法?

?为什么要使用冒泡?

?使用冒泡排序

1、代码示例

冒泡排序代码

?项目执行代码

2、执行结果

?使用冒泡排序的注意事项:(重点)

?冒泡算法使用总结:


?什么是冒泡算法?

冒泡算法是一种基础的排序算法。原理是多次遍历待排序的元素,每次比较相邻的两个元素,如果顺序不对则进行交换,直到所有元素都排好序为止。冒泡排序的特点是每一次遍历都会将最大(或最小)的元素沉到最后,并且每一次遍历都会有一个元素就位,因此被称为冒泡排序。

如下图所示:

?为什么要使用冒泡?

在实际应用中,冒泡算法可能并不是首选的排序算法,因为它的时间复杂度较高。然而,冒泡算法有以下几个优点:

  • 1. 简单易懂:冒泡算法的思想非常简单,容易理解和实现,即使对于初学者来说也比较容易掌握。
  • 2. 冒泡排序是稳定的:稳定性指的是如果两个元素的大小相等,经过排序后它们的相对位置保持不变。冒泡排序通过相邻元素的比较和交换,保证了相等元素的相对顺序不会改变,因此是稳定的排序算法。
  • 3. 适用于小规模数据:当待排序的数据规模比较小的时候,冒泡排序的效率并不会差到哪里去。由于冒泡排序的代码量较少且逻辑简单,对于数据量较小的情况下,可以使用冒泡排序来进行排序操作。

虽然冒泡算法在实际应用中可能并不是最优选择,但了解它的原理和特点对于理解排序算法的基本思想和思维方式是有帮助的。

?使用冒泡排序

1、代码示例

以下是使用冒泡排序算法进行数组排序的C#代码示例

冒泡排序代码
public void Bubble_sort(int[] List)
        {
            int i, t=1, Temp;//t是目前冒泡的次数,就是小于n-1;i是数组中的第几位元素;Temp是中间替换量,大家都懂哒
            bool Finish = false;//康康你到底冒泡冒完没有,刚开始是没有,所以判为F
            while((t<List.Length) && !Finish)
            {
                Finish = true;
                for (i = 0; i < List.Length - t; i++)
                {
                    if (List[i] > List[i + 1])
                    {
                        Finish = false;
                        Temp = List[i];
                        List[i] = List[i + 1];
                        List[i + 1] = Temp;//这里就是换数据的地方,其实可以简单化的,但是啊,我就是懒惰,聪明的,你,会写的。
                    }
                }
                t++;
            }
 
        }
?项目执行代码
using System;
 
namespace Bubble_Sort
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] Example = new int[] {-99,-4323,23,42,8848,114514,234 };
            Bubble bubble = new Bubble();
            bubble.Bubble_sort(Example);
            foreach(var item in Example)
            {
 
                Console.Write(item+"," );
                
            }
            Console.Read();
        }
 
    }
 
    public class Bubble
    {
        public void Bubble_sort(int[] List)
        {
            int i, t=1, Temp;//t是目前冒泡的次数,就是小于n-1;i是数组中的第几位元素;Temp是中间替换量,大家都懂哒
            bool Finish = false;//康康你到底冒泡冒完没有,刚开始是没有,所以判为F
            while((t<List.Length) && !Finish)
            {
                Finish = true;
                for (i = 0; i < List.Length - t; i++)
                {
                    if (List[i] > List[i + 1])
                    {
                        Finish = false;
                        Temp = List[i];
                        List[i] = List[i + 1];
                        List[i + 1] = Temp;//这里就是换数据的地方,其实可以简单化的,但是啊,我就是懒惰,聪明的,你,会写的。
                    }
                }
                t++;
            }
 
        }
    }
}

2、执行结果

排序后的数组效果:-432 -9 23 42 234 8848 114514

?使用冒泡排序的注意事项:(重点)

使用冒泡排序时需要注意以下几点:

1、冒泡排序是一种相邻元素比较和交换的算法,因此它是一种稳定排序算法,即相等元素的相对位置不会发生改变。

2、冒泡排序的时间复杂度为O(n^2),其中n为待排序数列的长度。因此,在处理大规模数据时,冒泡排序效率较低,不适合使用。

3、冒泡排序过程中,每一轮都会将一个最大(或最小)的元素"冒泡"到数列的末尾。因此,在第一次遍历后,最后一个元素已经是最大(或最小)的元素,无需再进行比较。

4. 如果待排序数列已经是有序的,冒泡排序仍然会进行比较和交换操作,但并不会改变数列的顺序。因此,可以通过设置一个标识位来判断数列是否已经有序,减少不必要的操作。

5. 冒泡排序是一种稳定的排序算法,相等元素的相对位置不会改变。因此,如果对于某些情况下需要保持相等元素的相对顺序时,冒泡排序是一种合适的选择。

综上所述,冒泡排序虽然简单易懂,但效率较低。在实际应用中,更推荐使用其他更高效的排序算法,如快速排序、归并排序等。

冒泡算法使用总结:

冒泡排序是一种简单但效率较低的排序算法。它的基本思想是通过相邻元素的比较和交换,将最大(或最小)的元素逐渐"冒泡"到数列的末尾,从而实现排序的目的。

具体步骤如下:

  • ①:从待排序的数列中,依次比较相邻的两个元素,如果前者比后者大(或小),则交换它们的位置。
  • ②:重复执行上述比较和交换的过程,直到整个数列排序完成。

冒泡排序的时间复杂度为O(n^2),其中n为待排序数列的长度。虽然冒泡排序的效率不高,但它有一些优点:简单易懂、稳定性好、适用于小规模数据等。因此,了解冒泡排序的原理和特点对于理解排序算法的基本思想和思维方式是有帮助的。

总结不易,希望宝宝们不要吝啬亲爱的👍哟(^U^)ノ~YO!如有问题,欢迎评论区批评指正😁

文章来源:https://blog.csdn.net/Jin_Xiang123/article/details/135086563
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。