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

news2024/9/20 8:57:03

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!如有问题,欢迎评论区批评指正😁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1322247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PIC单片机项目(6)——基于PIC16F877A的心率血氧检测装置

1.功能设计 使用PIC16F877A单片机&#xff0c;检测心率和血氧浓度&#xff0c;通过了protues仿真。仿真中&#xff0c;使用NE555芯片&#xff0c;构成一个振荡装置&#xff0c;振荡频率可调&#xff0c;用于模拟人体心率的变化。血氧传感器&#xff0c;则使用一个滑动变阻来模拟…

Log打印自动打印编译时间版本号打印方法

Log打印自动打印编译时间版本号打印方法 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;可加我微信hezkz17, 本群提供音频技术答疑服务&#xff0c;群赠送蓝牙音频&#xff0c;DSP音频项目核心开发资料,

scipy库的label函数|标记图像连通域

邻域 label函数标记连通区域 默认以 4 邻域划分区域 from scipy.ndimage import label import numpy as npa np.array([[0,0,1,1,0,0],[0,0,0,1,0,0],[1,1,0,0,1,0],[0,0,0,1,0,0]]) labels, N label(a) print(labels)[[0 0 1 1 0 0][0 0 0 1 0 0][2 2 0 0 3 0][0 0 0 4 0 …

Postman解决批量执行接口中包含文件上传接口断言错误

文章目录 前言一、问题描述二、解决方法一1.点击设置图标 → 选择 "Settings"2.打开允许读取工作目录外的文件开关3.重新批量执行接口&#xff08;问题完美解决&#xff09; 三、解决方法二1.点击设置图标 → 选择 "Settings"2.查看文件存储默认位置3.将要…

23级新生C语言周赛(6)(郑州轻工业大学)

题目链接:ZZULIOJ 3110: 数(shu)数(shu)问题 分析: 看到这个题第一步想的是 先把每个平方数给求出来 然后枚举 但是时间复杂度大于1e8 交了一下TLE 但后来打表发现,好数太多了要是枚举的话 注定TLE 能不能间接的去做呢? 把不是的减去,那不就是好数了吗? 这个时候又是打表,会…

Python轻松匹配文件:详解文件匹配和搜索技巧

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 文件匹配和搜索是日常编程中不可避免的任务&#xff0c;Python 提供了多种强大的工具来轻松应对这些需求。本文将深入探讨 Python 中文件匹配的不同方法&#xff0c;并通过丰富的示例代码演示如何灵活应用这些技…

Apache Doris 在奇富科技的统一 OLAP 场景探索实践

导读&#xff1a;随着消费信贷规模快速增长&#xff0c;个人信贷市场呈现场景化、体验感强的特征&#xff0c;精准营销、精细化风险管理以及用户使用体验的优化愈发重要。作为中国卓越的由人工智能驱动的信贷科技服务平台&#xff0c;奇富科技选择将 Apache Doris 作为整体 OLA…

Arcgis中利用模型构建器统一栅格数据的行列号

1、统一&#xff08;X,Y) 方法&#xff1a;"数据管理工具箱"→"Projections and Transformations"→"Raster"→"Project Raster" 构建模型 这里以行列号最小的栅格&#xff08;X,Y&#xff09;为准&#xff08;其实也就是栅格数据的空…

2024年【金属非金属矿山(地下矿山)安全管理人员】考试题及金属非金属矿山(地下矿山)安全管理人员考试内容

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员考试题是安全生产模拟考试一点通总题库中生成的一套金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员考试内容&#xff0c;安全生产模拟考试…

Opencv C++ 绘制中文

零、源码 GitHub - ITC-AI/Opencv_Chinese: C 的 Opencv绘制中文 一、代码编写 参考 https://blog.csdn.net/long630576366/article/details/131440684 1、cvxFont.h #ifndef OPENCVUNICODE_CVXFONT_H #define OPENCVUNICODE_CVXFONT_H#include <ft2build.h> #inclu…

windows安装conda小环境 windows安装anaconda python jupyter anaconda

windows安装anaconda之后&#xff0c;再安装本地的jupyter 1 如果想体验在线版的jupyter&#xff0c;可以访问anaconda在Anaconda Cloud&#xff0c;需要注册github&#xff1a; 1 下载anaconda &#xff0c;并安装 1.1 下载 或者去清华镜像下载 Free Download | Anacondah…

黑马头条--day03--2.文章发布

一.发布文章 1.表结构分析 wm_material 素材表 wm_news_material 文章素材关系表 2.关联表实体类 package com.heima.model.wemedia.pojos;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomido…

postman和代码里面如何增加鉴权

postman配置toekn: 方法1&#xff1a; 方法2&#xff1a; get请求在postman中使用的时候&#xff0c;authorization中带bearer token&#xff0c;那么使用Python构造get请求时&#xff0c;该token应该怎么带入呢&#xff1f; 解决方法如下&#xff1a; url_user "htt…

Linux Docker本地部署WBO在线协作白板结合内网穿透远程访问

文章目录 前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cpolar4. 配置WBO公网访问地址5. 公网远程访问WBO白板6. 固定WBO白板公网地址 前言 WBO在线协作白板是一个自由和开源的在线协作白板&#xff0c;允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用…

大数据机器学习-梯度下降:从技术到实战的全面指南

大数据机器学习-梯度下降&#xff1a;从技术到实战的全面指南 文章目录 大数据机器学习-梯度下降&#xff1a;从技术到实战的全面指南一、简介什么是梯度下降&#xff1f;为什么梯度下降重要&#xff1f; 二、梯度下降的数学原理代价函数&#xff08;Cost Function&#xff09;…

明理信息科技打造专属个人或企业知识付费平台,核心功能设计

在当今信息爆炸的时代&#xff0c;知识管理已经成为了每个人必须面对的问题。然而&#xff0c;市面上的知识付费平台大多数都是通用的&#xff0c;无法满足个性化需求。 因此&#xff0c;明理信息科技提供了一款专属定制的适合个人的知识付费平台。核心产品能力如下&#xff1…

TikTok获客怎么做?可以定制一个获客工具!

随着社交媒体的兴起&#xff0c;越来越多的企业开始将目光投向了短视频平台&#xff0c;TikTok作为其中的佼佼者&#xff0c;凭借其独特的算法和内容推荐机制&#xff0c;吸引了大量用户的关注。 那么&#xff0c;如何在TikTok上获取更多的客户呢?本文将为您揭秘TikTok获客的…

基于JAVA的海南旅游景点推荐系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户端2.2 管理员端 三、系统展示四、核心代码4.1 随机景点推荐4.2 景点评价4.3 协同推荐算法4.4 网站登录4.5 查询景点美食 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的海南旅游推荐系统&#xff…

Codeforces Round 915(Div.2) A~C(D,E更新中...)

A.Constructive Problems(思维) 题意&#xff1a; 给出一个 n m n \times m nm的网格&#xff0c;你需要将网格上所有点均填满水&#xff0c;当一个格子同时满足以下两个条件时&#xff0c;格子中也会被填满水&#xff1a; 该格子的左边或右边已经被填满水了 该格子的上面或…

什么是低代码(Low-code) 低代码开发平台特点-优势介绍

随着数字化转型的加速&#xff0c;越来越多的企业开始认识到应用开发的重要性。然而&#xff0c;传统的应用开发方式往往需要耗费大量的时间和资源&#xff0c;而且开发周期长&#xff0c;难以满足企业的快速需求。在这样的背景下&#xff0c;Low Code Platform(低代码平台)应运…