C# 入门算法“冒泡排序“ 升序 降序 最大值 最小值 平均值

简介: C# 入门算法“冒泡排序“ 升序 降序 最大值 最小值 平均值

效果图:

冒泡排序:

冒泡排序 是一种 排序 算法 就是把 数字 小的和 数字 大的进行位置的调换 部分的公司招聘 也拿来当做 面试题 …

为什么叫冒泡排序?

冒泡排序就是 和水里面产生的气泡一样从小到大的慢慢的升起 所以就叫冒泡排序

完整代码:

排序

int[] arr = {12,18,4,6,80,10,14,12,66,19};
            for (int i = 0; i < arr.Length; i++)
            {
                for (int j=0;j<arr.Length-1;j++)
                {
                  //大于号就是 大 到 小
                    if (arr[i] < arr[j])
                    {
                        int number = arr[i];
                        arr[i] = arr[j];
                        arr[j] = number;
                    }
                }                  
            }
            foreach (int look in arr)
            {
                Console.Write(look+" ");
            }
            Console.ReadKey();

定义进行排序的数组:

升序: 小的数字到大的数字

降序: 大的 到 小的

int[] arr = {12,18,4,6,80,10,14,12,66,19};

可以看见现在的顺序是非常的凌乱的

使用循环体进行换位置:

for (int i = 0; i < arr.Length; i++)
            {
                for (int j=0;j<arr.Length-1;j++)
                {
                    if (arr[i] < arr[j])
                    {
                        int number = arr[i];
                        arr[i] = arr[j];
                        arr[j] = number;
                    }
                }                  
            }

因为要进行 两个 元素的 对比 所以需要使用 两个循环体 进行 元素之间的对比

第一个循环跑一次 而内循环就需要跑 10次(根据元素的个数决定)

if (arr[i] < arr[j])
   {
int number = arr[i];
arr[i] = arr[j];
 arr[j] = number;

如果[i]号元素小于[j]号 两个元素之间就进行换位置 其中"number"是中间变量 存储[i]值

当然如果你想通过 不使用第三方 变量 进行交换 也可以这样

if (arr[i] < arr[j])
 {
 arr[i] = arr[i]+arr[j];
 arr[j] = arr[i]-arr[j];
 arr[i] = arr[i] - arr[j];
 }

额外知识:

不使用第三方 变量 进行 两个 变量的交换

int a =10;
int  b =20;
 a =a+b;
 b =a-b;
 a=a-b;

这样也可以达到一模一样的效果 原理还是那样 只是变的复杂了一点

但是不建议这里写 因为…简单的都变复杂化了

假设这是第一次循环:

i的每一个元素 j 都会一个个对比

上面演示的是 升序

降序:

//变成大于号
if (arr[i] > arr[j])
 {
int number = arr[i];
 arr[i] = arr[j];
  arr[j] = number;
  }

变动一个符号即可


当然如果你是初学者,看不懂 双重 循环体 也可以使用Arrar的静态方法

进行

int[] arr = {12,18,4,6,80,10,14,12,66,19};
 Array.Sort(arr);
 //一建对数组 进行升序的排序 

效果一模一样

这个静态方法 提供了 升序的排序 但他没有提供 降序的方法

不过可以用他的另外一个方法 进行数组反转的 来达到一样的效果

int[] arr = {12,18,4,6,80,10,14,12,66,19};
Array.Sort(arr);
 //升序排序
 Array.Reverse(arr);
 //数祖反转达到 降序效果


数组最小值:

求一个数组里面的 最小 一位数

比较简单

int[] arr = {-12,18,4,26,100,10,14,12,66,-19};
            int max = 0;
            for (int i = 0; i < arr.Length; i++)
            {    //大于号就是 最大值
                if (arr[i] <max)
                {
                    max = arr[i];
                    }
            }
            Console.WriteLine(max);
            Console.ReadKey();


平均值:

整数/个数字

int[] arr = {-12,18,4,26,100,10,14,12,66,-19};
            int max = 0;
            for (int i = 0; i < arr.Length; i++)
            {
                max +=arr[i];
            }
            Console.WriteLine(max/arr.Length-1);
            Console.ReadKey();


练习题:

生成10个随机数 进行 升序排序 算出 最大值 最小值 平均值

答案:

Random r = new Random();
            int[] arr = new int[10];
            int average = 0;
            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = r.Next(-10,100);
            }      
        for (int i = 0; i < arr.Length; i++)
        {
           average += arr[i];
            for (int j = 0; j < arr.Length - 1; j++)
            {
                if (arr[i] < arr[j])
                {
                    int tmp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = tmp;                    
                }
            }         
        }
        foreach (int number in arr)
        {
            Console.Write(number + " ");
        }
        Console.WriteLine("\n最小值是:" + arr[0]);
         Console.WriteLine("最大值是:" + arr[arr.Length-1]);
        Console.WriteLine("平均值是:" + (average / arr.Length - 1));
            Console.ReadKey();

纯手打,点个赞呗~

相关文章
|
6月前
|
存储 监控 算法
电脑监控管理中的 C# 哈希表进程资源索引算法
哈希表凭借O(1)查询效率、动态增删性能及低内存开销,适配电脑监控系统对进程资源数据的实时索引需求。通过定制哈希函数与链地址法冲突解决,实现高效进程状态追踪与异常预警。
302 10
|
6月前
|
存储 算法
算法入门:专题二---滑动窗口(长度最小的子数组)类型题目攻克!
给定一个正整数数组和目标值target,找出总和大于等于target的最短连续子数组长度。利用滑动窗口(双指针)优化,维护窗口内元素和,通过单调性避免重复枚举,时间复杂度O(n)。当窗口和满足条件时收缩左边界,更新最小长度,最终返回结果。
|
10月前
|
存储 运维 监控
基于 C# 语言的 Dijkstra 算法在局域网内监控软件件中的优化与实现研究
本文针对局域网监控系统中传统Dijkstra算法的性能瓶颈,提出了一种基于优先队列和邻接表优化的改进方案。通过重构数据结构与计算流程,将时间复杂度从O(V²)降至O((V+E)logV),显著提升大规模网络环境下的计算效率与资源利用率。实验表明,优化后算法在包含1000节点、5000链路的网络中,计算时间缩短37.2%,内存占用减少21.5%。该算法适用于网络拓扑发现、异常流量检测、故障定位及负载均衡优化等场景,为智能化局域网监控提供了有效支持。
279 5
|
11月前
|
存储 算法 安全
如何控制上网行为——基于 C# 实现布隆过滤器算法的上网行为管控策略研究与实践解析
在数字化办公生态系统中,企业对员工网络行为的精细化管理已成为保障网络安全、提升组织效能的核心命题。如何在有效防范恶意网站访问、数据泄露风险的同时,避免过度管控对正常业务运作的负面影响,构成了企业网络安全领域的重要研究方向。在此背景下,数据结构与算法作为底层技术支撑,其重要性愈发凸显。本文将以布隆过滤器算法为研究对象,基于 C# 编程语言开展理论分析与工程实践,系统探讨该算法在企业上网行为管理中的应用范式。
312 8
|
6月前
|
存储 算法
算法入门:专题一:双指针(有效三角形的个数)
给定一个数组,找出能组成三角形的三元组个数。利用“两边之和大于第三边”的性质,先排序,再用双指针优化。固定最大边,左右指针从区间两端向内移动,若两短边之和大于最长边,则中间所有组合均有效,时间复杂度由暴力的O(n³)降至O(n²)。
|
6月前
|
存储 机器学习/深度学习 监控
网络管理监控软件的 C# 区间树性能阈值查询算法
针对网络管理监控软件的高效区间查询需求,本文提出基于区间树的优化方案。传统线性遍历效率低,10万条数据查询超800ms,难以满足实时性要求。区间树以平衡二叉搜索树结构,结合节点最大值剪枝策略,将查询复杂度从O(N)降至O(logN+K),显著提升性能。通过C#实现,支持按指标类型分组建树、增量插入与多维度联合查询,在10万记录下查询耗时仅约2.8ms,内存占用降低35%。测试表明,该方案有效解决高负载场景下的响应延迟问题,助力管理员快速定位异常设备,提升运维效率与系统稳定性。
319 4
|
6月前
|
存储 算法 编译器
算法入门:剑指offer改编题目:查找总价格为目标值的两个商品
给定递增数组和目标值target,找出两数之和等于target的两个数字。利用双指针法,left从头、right从尾向中间逼近,根据和与target的大小关系调整指针,时间复杂度O(n),空间复杂度O(1)。找不到时返回{-1,-1}。
|
9月前
|
搜索推荐 算法 Go
Go语言数组排序(冒泡排序法)—— 用最直观的方式掌握排序算法
本案例介绍使用冒泡排序对整数数组进行升序排序的实现方法,涵盖输入处理、错误检查与排序逻辑。通过代码演示和算法解析,帮助理解排序原理及Go语言切片操作,为学习更复杂排序算法打下基础。
|
9月前
|
监控 算法 安全
基于 C# 基数树算法的网络屏幕监控敏感词检测技术研究
随着数字化办公和网络交互迅猛发展,网络屏幕监控成为信息安全的关键。基数树(Trie Tree)凭借高效的字符串处理能力,在敏感词检测中表现出色。结合C#语言,可构建高时效、高准确率的敏感词识别模块,提升网络安全防护能力。
239 2
|
10月前
|
监控 算法 数据处理
内网实时监控中的 C# 算法探索:环形缓冲区在实时数据处理中的关键作用
本文探讨了环形缓冲区在内网实时监控中的应用,结合C#实现方案,分析其原理与优势。作为固定长度的循环队列,环形缓冲区通过FIFO机制高效处理高速数据流,具备O(1)时间复杂度的读写操作,降低延迟与内存开销。文章从设计逻辑、代码示例到实际适配效果展开讨论,并展望其与AI结合的潜力,为开发者提供参考。
417 2