C#基础之冒泡排序

排序初探
在这里插入图片描述

文章目录

      • 冒泡排序
        • 1、概念
        • 2、冒泡排序的基本原理
        • 3、代码实现
          • 思考1 随机数冒泡排序
          • 思考2 函数实现排序

冒泡排序

1、概念

将一组无序的记录序列调整为有序的记录序列(升、降序)

2、冒泡排序的基本原理

两两相邻,不停比较,不停交换,比较n轮

3、代码实现
第一步 如何比较数组中两两相邻的数
从头开始,第n个数和第n+1个数比较
for(int n =0; n < arr.Length - 1; n ++){	//arr.Length-1 因为数组下标是从0开始,所以比较次数也就相当于数组个数-1
    if( arr[n] > arr[n+1]){
        //第二步 交换位置
        int temp = arr[n];
        arr[n] = arr[n+1];
        arr[n+1] = temp;
    }
}
//第三步 换m轮 有m个数比较m轮
int[] arr = new int[]{8,7,6,1,5,4,2,6,3,9};
for(int m = 0; m < arr.Length; m++){
    for(int n =0; n < arr.Length - 1; n ++){
   		if( arr[n] > arr[n+1]){
        	int temp = arr[n];
        	arr[n] = arr[n+1];
        	arr[n+1] = temp;
    	}
	}	
}
//查看排序结果
for(int i =0; i<arr.Length;i++){
    Console.WriteLine(arr[i]);
}
第四步 优化
int[] arr = new int[]{8,7,6,1,5,4,2,6,3,9};
1、确定位置最大的数字,不用比较
    确定一轮,极值(最大、最小值)已经放到了对应的位置
    所以每完成n轮,后面位置的数,就不用再参与比较了
for(int m = 0; m < arr.Length; m++){
    for(int n =0; n < arr.Length - 1 - m; n ++){
   		if( arr[n] > arr[n+1]){
        	int temp = arr[n];
        	arr[n] = arr[n+1];
        	arr[n+1] = temp;
    	}
	}	
}
for(int i =0; i<arr.Length;i++){
    Console.WriteLine(arr[i]);
}
int[] arr = new int[]{8,7,6,1,5,4,2,6,3,9};
再优化
bool isSort = false;
for(int m = 0; m < arr.Length; m++){
    isSort = false;
    for(int n =0; n < arr.Length - 1 - m; n ++){
   		if( arr[n] > arr[n+1]){
            isSort = true;
        	int temp = arr[n];
        	arr[n] = arr[n+1];
        	arr[n+1] = temp;
    	}
	}	
}
//当一轮结束后,如果isSort是false,就是最终排序了,不需要再去多余交换了
if(!isSort){
    break;
}
for(int i =0; i<arr.Length;i++){
    Console.WriteLine(arr[i]);
}
思考1 随机数冒泡排序
//定义一个数组,长度为20,每个元素值随机0~100
//使用冒泡排序进行升序
int[] arr = new int[20];
Random random = new Random();
for (int i = 0; i < arr.Length; i++)
{
    arr[i] = random.Next(0, 101);
    Console.Write(arr[i] + " ");
}

//外层轮数
for (int i = 0; i < arr.Length; i++)
{
    //内层比较
    for (int j = 0; j < arr.Length - 1 - i; j++)
    {
        //做比较,满足条件交换
        if (arr[j] > arr[j + 1])
        {
            int temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
}
Console.WriteLine();
for (int i = 0; i < arr.Length; i++)
{
    Console.Write(arr[i] + " ");
}
思考2 函数实现排序
Random random = new Random();
int[] arr = new int[10];
for (int i = 0; i < arr.Length; i++)
{
    arr[i] = random.Next(1,21);
    Console.Write(arr[i]+" ");
}
Sort(arr, false);
Console.WriteLine();
for (int i = 0; i < arr.Length; i++)
{
    Console.Write(arr[i] + " ");
}
static int[] Sort(int[] array,bool isAscendingOrder)
{
    int temp; bool order;
    for (int i = 0; i < array.Length; i++)
    {
        for (int j = 0; j < array.Length - 1 -i; j++)
        {
            order = isAscendingOrder ? array[j] > array[j + 1] : array[j] < array[j + 1];
            if (order)
            {
                temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
    return array; //数组是引用类型,不用new,直接改
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mySQL商城项目实战 (终)(全部表)(1-88张)

本章无sql语句&#xff0c;直接放转出的sql文件。 88张表结果如图! 资源在已经与文章绑定&#xff0c; 在navicat工具中&#xff0c;执行以下步骤 在新建的数据库中右键,点击【运行sql文件】&#xff0c;运行绑定的资源&#xff0c;之后您就可以在您的navicat中看到我建好的8…

OpenLayers入门①(引入的是一个高德地图)

OpenLayers入门&#xff08;一&#xff09; - 知乎 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&qu…

使用 LooperPrinter 监控 Android 应用的卡顿

在 Android 开发中&#xff0c;主线程&#xff08;UI线程&#xff09;的卡顿直接影响用户体验。LooperPrinter 是一种有效的工具&#xff0c;可以帮助我们监测和识别这些卡顿。下面是如何实现 LooperPrinter 监控的详细步骤和相应的 Kotlin 代码示例。 步骤 1: 创建自定义的 P…

【java超方便的导入导出工具类】SpringBoot操作Excel导入和导出

Excel导入和导出 一、前期准备 1、首先导入主要的依赖 <dependencies><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency><depende…

Stable Diffusion 模型分享:Counterfeit-V3.0(动漫)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 高质量动漫风格模型。 条目内容类型大模型基础模…

关于使用SpringSecurity框架发起JSON请求,但因登陆失效导致响应403的问题。

这里记录一个生产中遇到的一个问题。 现有环境是基于SpringBoot 2.6.8&#xff0c;然后是前后台一体化的项目。 安全框架使用的是内置版本的SpringSecurity。 在实际使用过程中遇到一个问题。 就是当用户登陆失效后&#xff0c;前端操作JSON请求获取列表数据&#xff0c;但…

【知识学习/复习】损失函数篇,包含理解应用与分类:回归、分类、排序、生成等任务

损失函数总结 一、损失函数理解二、不同任务的损失函数的应用1.图像分类2.目标检测3.语义分割4.自然语言处理&#xff08;NLP&#xff09;5.图神经网络&#xff08;GNN&#xff09;6.生成式网络 三、损失函数1. 回归任务损失函数常见损失函数IoU系列损失函数1. IoU损失函数&…

微信开发api、微信视频号开发

接口地址&#xff1a; http://api.videostui.com/finder/v2/api/login/checkLogin 接口说明 获取到登录二维码后需每间隔5s调用本接口来判断是否登录成功新设备登录平台&#xff0c;次日凌晨会掉线一次&#xff0c;重新登录时需调用获取二维码且传appId取码&#xff0c;登录成…

Outlook邮箱如何撤回一封已发送邮件?~网页版上

点【已发送邮件】 双击要撤回的已发送的那个邮件 点【…】 点击【撤回消息】 点【确定】 结束&#xff01;

使用LocalGPT+cpolar打造可远程访问的本地私有类chatgpt服务

文章目录 前言环境准备1. localGPT部署2. 启动和使用3. 安装cpolar 内网穿透4. 创建公网地址5. 公网地址访问6. 固定公网地址 前言 本文主要介绍如何本地部署LocalGPT并实现远程访问&#xff0c;由于localGPT只能通过本地局域网IP地址端口号的形式访问&#xff0c;实现远程访问…

【源代码】使用Vision Pro远程操控机器人

1、OpenTeleVision 是一个开源项目&#xff0c;提供远程操作功能 2、可以从 VisionPro 或 Meta Quest 3 中流式传输头部、手部和腕部数据 3、可以将实时立体视频从摄像头流式传输到 VR 设备 4、需要在 Ubuntu 机器上安装 Zed SDK 和 mkcert&#xff0c;以便在本地进行测试 …

全新突破:「Paraverse平行云」实现3D/XR企业级应用全面接入Apple Vision Pro

在前不久举行的GTC开发者大会上&#xff0c;英伟达引领行业风向&#xff0c;宣布其Omniverse平台能够助力企业将3D/XR应用流畅传输至Apple Vision Pro混合现实头显。在英伟达与苹果这两大科技巨头的合作下,此举标志着3D/XR技术迈向新纪元的关键一步。「Paraverse平行云」实时云…

基于STM32单片机的汽车胎压、速度及状态监测系统设计与实现

基于STM32单片机的汽车胎压、速度及状态监测系统设计与实现 摘要&#xff1a; 随着汽车电子技术的快速发展&#xff0c;车辆状态实时监控系统的需求日益增长。本文设计并实现了一种基于STM32单片机的汽车胎压、速度及状态监测系统。该系统能够实时监测汽车的胎压、速度以及其他…

算法设计与分析4.1 迷宫问题 栈与队列解法、打印矩阵、三壶问题、蛮力匹配

1.ROSE矩阵 实现&#xff1a; 使用算法2 分析&#xff1a; 每半圈元素值的增长规律变换一次 设增量为t&#xff0c;每半圈变换一次t <— -t . 设矩阵边长为i&#xff0c;每半圈的元素个数是2*(i-1)个&#xff0c;hc为记数变量&#xff0c;则1≤hc<2i-1&#xff0c;前1/…

ChatGLM2-6B的部署步骤_A3

ChatGLM2-6B 下载地址 一、VisualGLM-6B环境安装 1、硬件配置 操作系统&#xff1a;Ubuntu_64&#xff08;ubuntu22.04.3&#xff09; GPU&#xff1a;4050 显存&#xff1a;16G 2、配置环境 建议最好自己新建一个conda环境 conda create -n chatglm2 python3.8pip …

【go项目01_学习记录day01】

博客系统 1 vscode开发go项目插件推荐1.1 CtrlShiftP&#xff08;俗称万能键&#xff09; &#xff1a;打开命令面板。在打开的输入框内&#xff0c;可以输入任何命令。1.2 开发时&#xff0c;我们需要经常查阅 Go 语言官方文档&#xff0c;可惜因国内访问外网不稳定&#xff0…

STM32开启停止模式,用外部中断唤醒程序运行

今天学习了一下STM32的停止模式&#xff0c;停止模式下&#xff0c;所有外设的时钟和CPU的电源都会被关闭&#xff0c;所以会很省电&#xff0c;打破这种停止模式的方式就是外部中断可以唤醒停止模式。要想实现这个功能&#xff0c;其实设置很简单的&#xff0c;总共就需要两步…

《C语言深度解剖》(10):数组指针、指针数组和数组指针数组

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》《精通C指针》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多C语言深度解剖点击专栏…

情感类ppt素材

小清新手绘插画风毕业季毕业相册同学录画册纪念册PPT下载 - 觅知网这是一张关于清新毕业相册的PPT模板&#xff0c;清新风格设计&#xff0c;加上风为装饰元素&#xff0c;包含毕业相册、毕业季、毕业、同学、纪念等主题内容&#xff0c;也可用作毕业相册PPT、毕业季PPT、毕业P…

陪诊小程序:温情陪伴,就医无忧

在快节奏的现代生活中&#xff0c;健康问题时常困扰着我们。每当身体出现不适&#xff0c;前往医院就诊便成为了一项必要的任务。然而&#xff0c;面对陌生的医院环境、繁琐的就诊流程&#xff0c;许多人往往会感到无助和困惑。此时&#xff0c;一款贴心的陪诊小程序便显得尤为…