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开始,所以比较次数也就相当于数组个数-1if( 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,直接改
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海外仓精细化管理方法:ABC库存分析,大幅提升仓库有效利用率

ABC分析是海外仓管理的一种比较有效的方法&#xff0c;主要是帮助评估库存产品对仓库的价值量大小。这是一种根据需求、成本和风险数据等因素综合进行的评估&#xff0c;通过评估&#xff0c;仓管员可以更有效的组织和安排仓库产品&#xff0c;提升仓库的有效利用率&#xff0c…

微信小程序:11.本地生活小程序制作

开发工具&#xff1a; 微信开发者工具apifox进行创先Mock 项目初始化 新建小程序项目输入ID选择不使用云开发&#xff0c;js传统模版在project.private.config中setting配置项中配置checkinalidKey&#xff1a;false 梳理项目结构 因为该项目有三个tabbar所以我们要创建三…

交换排序-冒泡排序 快速排序

目录 3.1 冒泡排序 3.2 快速排序 Hoare版本快速排序 挖坑法快速排序 前后指针法快速排序 快速排序优化-三数取中法 快速排序非递归 3.1 冒泡排序 思想&#xff1a;升序情况下&#xff1a;左边大于右边就进行交换&#xff0c;每一次把最大的放在最后一位。 void Swap(int…

微信小程序:6.事件

什么事事件 事件就是渲染层到逻辑层的通讯方式&#xff0c;比如提交表单&#xff0c;按钮点击都可以看作一个事件。 小程序中常用的事件 事件对象属性列表 当事件回调时&#xff0c;会收到一个事件对象event&#xff0c;他详细属性如夏表所示&#xff1a; target和curren…

web(微博发布案例)

示例&#xff1a; 1、检测空白内容 2、发布内容 html: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta …

本地Windows主机,使用pycharm通过wsl的ubuntu来创建django项目

Windows主机在pycharm中通过wsl的ubuntu来创建django项目 需求&#xff1a;在windows主机中创建python项目再转接到linux服务器中运行&#xff0c;有点麻烦。【特别是存放日志文件或其他文件路径时需要修改为linux中的路径】 1&#xff1a;我的是windows主机 2&#xff1a;有…

【uniapp/ucharts】采用 uniapp 框架的 h5 应用使用 ucharts(没有 uni_modules)

这种情况无法直接从 dcloud 平台上一键下载导入&#xff0c;所以应该在官网推荐的 git 仓库去单独下载&#xff1a; https://gitee.com/uCharts/uCharts/tree/master/uni-app/uCharts-%E7%BB%84%E4%BB%B6/qiun-data-charts(%E9%9D%9Euni_modules) 下载的文件是如图所示的路径&…

跳出框架:Facebook的创新策略与社交影响

1. 引言 在数字化时代&#xff0c;社交媒体如同一面镜子&#xff0c;反映出我们社会的多元性和变革。Facebook&#xff0c;作为这面镜子中最明亮的一个&#xff0c;不仅改变了人们的日常生活&#xff0c;更深刻地塑造了社交、文化和经济的面貌。本文将深入探讨Facebook的创新策…

DRF JWT认证进阶

JWT认证进阶 【0】准备工作 &#xff08;1&#xff09;模型准备 模型准备&#xff08;继承django的auth_user表&#xff09; from django.db import models from django.contrib.auth.models import AbstractUserclass UserInfo(AbstractUser):mobile models.CharField(ma…

Grafana系列 | Grafana监控TDengine库数据 |Grafana自定义Dashboard

开始前可以去grafana官网看看dashboard文档 https://grafana.com/docs/grafana/latest/dashboards 本文主要是监控TDengine库数据 目录 一、TDengine介绍二、Grafana监控TDengine数据三、Grafana自定义Dashboard 监控TDengine库数据1、grafana 变量2、添加变量3、配置panel 一…

ArcGIS批量寻找图层要素中的空洞

空洞指的是图层中被要素包围所形成的没有被要素覆盖的地方&#xff0c;当图层要素数量非常庞大时&#xff0c;寻找这些空洞就不能一个一个的通过目测去寻找了&#xff0c;需要通过使用工具来实现这一目标。 一、【要素转线】工具 利用【要素转线】工具可以将空洞同图层要素处于…

CARLA (I)--Ubuntu20.04 服务器安装 CARLA_0.9.13服务端和客户端详细步骤

目录 0. 说明0.1 应用场景&#xff1a;0.2 本文动机&#xff1a; 1. 准备工作2. 安装 CARLA 服务端软件【远程服务器】3. 安装 CARLA 客户端【远程服务器】3.1 .egg 文件安装&#xff1a;3.2 .whl 文件安装&#xff1a;3.3 从Pypi下载Python package 4. 运行服务端程序5. 运行客…