C#基础之冒泡排序

devtools/2024/9/23 14:35:47/

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

文章目录

      • 冒泡排序
        • 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.ppmy.cn/devtools/25591.html

相关文章

富格林:可信方略杜绝交易虚假

富格林指出&#xff0c;黄金市场是一个极具诱惑力的市场&#xff0c;它是在一个大家共同认可的游戏规则下&#xff0c;凭借自己可信的决策、判断来进行交易的一种投资市场。黄金市场不断有新手投资者的加入&#xff0c;但是要真正在该市场上获利&#xff0c;杜绝虚假套路是一个…

【即插即用】SGE注意力机制(附源码)

原文链接&#xff1a; https://arxiv.org/abs/1905.09646 源码链接&#xff1a; https://github.com/implus/PytorchInsight 摘要简介&#xff1a; 在图像识别领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09;通过收集和整合复杂对象的层次化和不同部分的语义子特…

bitbake ERROR:No space left on device or exceeds fs.inotify.max_user_watches?

使用vscode remote ssh来编辑服务器上源码后&#xff0c;执行bitbake编译时&#xff0c;遇到了如下报错&#xff1a;ERROR:No space left on device or exceeds fs.inotify.max_user_watches? 可能的解决方法和原因&#xff1a; 首先可以尝试关闭vscode&#xff0c;然后在服务…

给rwkv_pytorch增加rag

RAG 参考地址语义模型地址选择该模型使用方法方法二安装方法下载模型到本地材料材料处理语义分割计算得分根据得分 分割文本 构建向量数据库问答匹配问答整合 参考地址 RAG简单教程 分割策略 语义模型地址 hf 选择该模型 gte 使用方法 import torch.nn.functional as F…

Linux下网络编程-基于多任务的简易并发服务器

Linux下网络编程-基于多任务的简易并发服务器 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <signal.h> #include <sys/wait.h> #include <arpa/inet.h> #include <sys/socket.h&…

科技赋能无人零售

科技赋能无人零售&#xff0c;使其具备以下独特优势&#xff1a; 1. 全天候无缝服务 &#xff1a;无人零售店依托科技&#xff0c;实现24小时不间断运营&#xff0c;不受人力限制&#xff0c;满足消费者随时购物需求&#xff0c;尤其惠及夜间工作者、夜猫子及急需购物者&…

汽车信息安全入门总结(1)

目录 1.汽车信息安全应关注什么 2.法规先行 3.小结 1.汽车信息安全应关注什么 汽车信息安全从2015年开始被引起重视发展至今已近10年时间&#xff0c;虽然有很多高屋建瓴的白皮书、指导标准可以指导我们从宏观了解汽车信息安全这个新兴行业&#xff0c;但真正实际需求落实到…

Qt窗口全屏显示方法

要在Qt中设置窗口全屏显示&#xff0c;可以采取以下方法&#xff1a; 使用showFullScreen()方法&#xff1a; 对于QWidget对象&#xff0c;可以直接调用showFullScreen()方法来实现全屏显示。 QWidget w; w.showFullScreen();使用setWindowState()方法&#xff1a; 可以通过…