尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

掌握冒泡与选择排序精髓

掌握冒泡与选择排序精髓
📅 发布时间:2026/6/20 4:44:10

//冒泡排序:

俩两相比,如果前面大于后面的值这时候交换位置。
//外循环要经过多少轮 一轮找出一个最值
//内循环比较多少次 例如5个数比较4次即可,下一轮的时候 不用和上传最值进行比较,所以写内循环次数可以 这样写list.Count-1-i


List<int> list = new List<int>() { 1,99,2,8,11,20,16,89};
for (int i = 0; i < list.Count-1; i++) // 为啥减-,例如数组的个数为5的话,只需要找出4个最值即可
{
for (int j = 0; j < list.Count-1-i; j++) // 内循环目的是为了要进行比较 并且交换位置
{ // j < list.Count-1-i :之前已经找出最值,下轮没必要和上轮最值进行比较,
if (list[j]>list[j+1]) // 比较相邻位置交换位置 如果前面的大 交换位置
{
int temp = list[j];// 定义一个临时值 存储其中一个值
list[j] = list[j+1];// 把后面的值赋值给前面元素
list[j+1] =temp;// 把temp赋值给数组后面的元素
}
}
}
foreach (var item in list)
{
Console.WriteLine(item+"----");
}


//选择排序:

每一轮找出最值的索引值,根据索引值再进行交换位置,所以交换的次数比冒泡排序的次数少,找出最值把最值放在已经排序的末尾

ArrayList list = new ArrayList() { 100,2,900,100,10,89,88};

for (int i = 0; i < list.Count - 1; i++)
{
int minIndex = i;// 每一轮循环的 把i当成最小值的索引值, 0 1 2 3.4 5..
for (int j = i+1; j < list.Count; j++)
{
if (Convert.ToInt16(list[j]) < Convert.ToInt16(list[minIndex])) // 取出最小值:list[minIndex],如果其中的一个元素比最小值还小,这时候list[j]最小值,
// 记录j的索引值

{
minIndex = j;
}
}
//在内循环外部进行交换位置
if (i!=minIndex) //如果找到的最小的和初始化的赋值的最小的不一样进行交换,
{
//list[minIndex] 和 list[i] 进行交换位置
int temp = Convert.ToInt16(list[i]);
list[i] = list[minIndex]; //最小值赋值给当前遍历的元素 已经排序的末尾
list[minIndex] = temp;
}

}
Console.WriteLine(string.Join (",",list.ToArray())); //join() 把参数2的数组用参数1的符号进行拼接成一个字符串

类 对象 方法 复习以及默认修饰符

//类: 具有相同属性和方法的集合,类就是数据的模版,不包含实际的数据 例如人类、电脑类 狗类 、猫类... //对象:类的实例化,对象才有实际的数据,如:一个人、一只鸟、一只猫、一只金毛、玩家A、玩家B、哥布林、牛头怪 // 类成员:一个类中包含需要的信息(属性)和行为(方法),这些信息我们统称为类成员。类成员用于记录这个类的信息,类成员包含(属性,字段 、方法) // 如:人类应该拥有名字、性别、年龄等属性,应该拥有吃、喝、拉、撒、睡等方法 // 类和对象是面向对象编程语言的一大核心 //2 创建对象语法:类名 对象名 = new 类名(); People zhangsan = new People(); //zhangsan.age 因为age是私有的 不能在外部访问 zhangsan.Name = "李四"; //3 非static的方法使用对象.方法名去调用 zhangsan.Eat(); //4 调用drink方法 People p1 = new People(); p1.Name = "张三"; p1.Drink(); People p2 = new People(); p2.Name = "李四"; p2.Drink(); Console.ReadKey(); } } //修饰符:就是类和属性、字段、方法使用的范围、 //一般类默认修饰符internal , //字段的默认修饰符是private 主要是保证数据的安全性, //属性一般定义public 主要是外部进行访问, // 方法一般定义成public //public:允许类、属性、字段、方法在类的外部进行访问, // private 只能在本类里面访问, //protected 不能在外部访问属性或者字段 //internal :当前项目可以引用该类(后续演示) // 1 定义类语法: 修饰符 class 类名{} public class People { private int age; //字段名一般是小写, 默认是私有的 protected int id;// 受保护的字段 public string Name { get; set; }// 属性 一般定义public 名称是大驼峰命名法则 //定义一个方法 无返回值的方法 public void Eat() { Console.WriteLine("吃炸鸡"); } //定义一个方法, public void Drink() { Console.WriteLine(this.Name+"喝可乐"); //在自己类访问可以省去this ,this代表目前创建的对象 }

相关新闻

  • 泉盛UV-K5/K6对讲机LOSEHU固件:从硬件限制到无限可能的蜕变之旅
  • 35、嵌入式Linux网络服务搭建指南(上)
  • Kafka Exporter终极部署指南:5分钟实现专业级Kafka监控

最新新闻

  • 2026年6月最新卡地亚中国官方售后客服热线地址及服务网点查询 - 卡地亚服务中心
  • 2026北京劳力士二手回收门店盘点:一文匹配适合你的店铺。附黑水鬼、日志型、迪通拿估价指南 - 博客万
  • 2026年6月最新江诗丹顿中国官方售后服务地址与客服电话网点列表 - 江诗丹顿服务中心
  • 终极指南:如何在Windows 11上安装免费Bili.UWP客户端享受原生B站体验
  • 抖音有实力的直播公会推荐 - 速递信息
  • 使用acme.sh获取免费泛域名SSL证书:从DNS验证到自动化部署

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号