三种排序和对数器

三种排序

选择排序

就是在数组选出最小的数放到第一个索引上,然后选出次最小的数放到第二个索引上,依此类推
:::info
[ 5, 1 , 3 , 2 , 4 ]
第一次从0~4索引选出最小的放到0索引 [ 1, 5 , 3 , 2 , 4 ]
第二次从1~4索引选出最小的放到1索引 [ 1 ,2 , 5 , 3 , 4 ]
第三次从2~4索引选出最小的放到2索引 [ 1 ,2 , 3 , 5 , 4 ]
第四次从3~4索引选出最小的放到3索引 [ 1 ,2 , 3 , 4 , 5 ]
简单的办法就是:你要讲要放到索引位置的数看成最小的,然后依次与其他索引的数进行比较,这样最小的数就会放到该索引的位置
:::

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

冒泡排序

就是数组中相邻元素俩俩比较,小的排前面(升序)
:::info
[5 , 1 , 3 , 2 , 4 ]
第一次从0~4索引将相邻元素比较小的前 [1 , 3 , 2 , 4 , 5 ]
第二次从0~3索引将相邻元素比较小的前 [1 ,2 , 3 , 4 , 5 ]
第三次从0~2索引将相邻元素比较小的前 [ 1 ,2 , 3 , 4 , 5 ]
第四次从0~1索引将相邻元素比较小的前 [ 1 ,2 , 3 , 4 , 5 ]
相当于第一次将最大的放到最后
:::

 for (int i = 1; i < arr.length; i++) {//0 1 2 3//让里面的数据俩俩比较,小的在前面for (int j = 0; j < arr.length - i; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}

插入排序

先认为0~0索引是有序,在1索引插入一个数,然后这个数要是大于0索引的数就换位置,在2索引插入一个数,然后与1索引比较,要换位置在将1索引与2索引数进行比较,让其在插入之前变得有序
:::info
[ 5, 1 , 3 , 2 , 4 ]
假设第一个数有序[ 5 ],然后在其后面插入1这个数字变成
[5,1],因为1 < 5,所以换位置变成[1,5];然后在后面插入数字3,变成[1,5,3],因为3 < 5,所以换位置变成[1,3,5],然后3 > 1,所以不换位置,然后再插入下一个数,依次类推
:::

//数组长度位N的话,会插入N-1个数,所以外层循环位N-1次
for (int i = 1; i < arr.length; i++) {//内循环 就是比较插入位置相邻的,往前比较,所以j变得越来越小for (int j = i - 1; j >= 0; j--) {if (arr[j + 1] < arr[j]){int temp = arr[j+1];arr[j +1] = arr[j];arr[j] = temp;}}}

对数器

可以进行自我验证,也可以进行大量测试,也可以帮助自己找到错误等
实现

  1. 你想要测的方法A(最优解)
  2. 实现复杂度不好但是容易实现的方法B(暴力解)
  3. 实现一个随机样本产生器(长度和值都随机)
  4. 将方法A和方法B跑相同的输入样本,看看得到的结果是否一样
  5. 如果有一个随机样本使得比对结果不一致,打印样本并自己进行分析,对方法进行改善
  6. 当样本数量很多时比对测试依然正确,可以确定方法A正确

注意:关键是第5步,找到一个数据量小的错误样本然后进行排查改善

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

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

相关文章

数据结构-----链表

目录 1.顺序表经典算法 &#xff08;1&#xff09;移除元素 &#xff08;2&#xff09;合并数组 2.链表的创建 &#xff08;1&#xff09;准备工作 &#xff08;2&#xff09;建结构体 &#xff08;3&#xff09;链表打印 &#xff08;4&#xff09;尾插数据 &#xff…

【unity】【C#】UGUI组件

文章目录 UI是什么对UI初步认识 UI是什么 UI是用户界面&#xff08;User Interface&#xff09;的缩写&#xff0c;它是用户与软件或系统进行交互的界面。UI设计旨在提供用户友好的界面&#xff0c;使用户能够轻松地使用软件或系统。UI设计包括界面的布局、颜色、字体、图标等…

Github Benefits 学生认证/学生包 新版申请指南

本教程适用于2024年之后的Github学生认证申请&#xff0c;因为现在的认证流程改变了很多&#xff0c;所以重新进行了总结这方面的指南。 目录 验证教育邮箱修改个人资料制作认证文件图片转换Base64提交验证 验证教育邮箱 进入Email settings&#xff0c;找到Add email address…

Java集合List

List特有方法 经典多态写法 // 经典的多态写法 List<String> list new ArrayList<>();常用API&#xff1a;增删改查 // 添加元素 list.add("Java"); // 添加元素到指定位置 list.add(0, "Python");// 获取元素 String s list.get(0);// 修改…

Docker容器嵌入式开发:在Ubuntu上配置Postman和flatpak

在 Ubuntu 上配置 Postman 可以通过 Snap 命令完成&#xff0c;以下是所有命令的总结&#xff1a; sudo snap install postmansudo snap install flatpak在 Ubuntu 上配置 Postman 和 Flatpak 非常简单。以下是一些简单的步骤&#xff1a; 配置 Flatpak 安装 Flatpak&#x…

【Linux】环境下OpenSSH升级到 OpenSSH_9.6P1(图文教程)

漏洞描述 OpenSSH&#xff08;OpenBSD Secure Shell&#xff09;是加拿大OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现&#xff0c;支持对所有的传输进行加密&#xff0c;可有效阻止窃听、连接劫持以及其他网络级的攻击。OpenSSH 9.6之前…

Qt5 编译 Qt Creator 源码中的 linguist 模块

文章目录 下载 Qt Creator 源码手动翻译多语言自动翻译多语言 下载 Qt Creator 源码 Github: https://github.com/qt/qttools 笔记打算用 Qt 5.12.12 来编译 qt creator-linguist 所以笔者下载的是 tag - 5.12.12 &#xff0c;解压后如下&#xff0c;先删除多余的文件&#xf…

vue + element plus:ResizeObserver loop completed with undelivered notifications

ResizeObserver loop completed with undelivered notifications. 解释&#xff1a; 这个错误通常表示ResizeObserver无法在一个浏览器帧中传递所有的通知&#xff0c;因为它们需要的处理时间比帧的剩余时间更长。这通常发生在被观察元素的尺寸变化导致了一连串的回调函数被调…

ElasticSearch 的 DisMaxQueryBuilder 的理解

DisMaxQueryBuilder的定义&#xff1a; A query that generates the union of documents produced by its sub-queries, and that scores each document with the maximum score for that document as produced by any sub-query, plus a tie breaking increment for any addit…

爬虫相关的简单操作

爬虫&#xff1a;一种程序&#xff0c;从网站上爬取各种各样的数据&#xff0c;包括图片、视频、音乐、文档等 一、爬哪一个网址&#xff1f; 怎么找到一个视频的网址&#xff1a; 1、在浏览器右上角菜单--更多工具--开发者工具 2、选中网络&#xff08;network&#xff09…

51单片机 DS1302

DS1302 实现流程 将提供的ds1302底层参考程序拷贝到工程下 注意在ds1302.c中可能硬件引脚没有定义&#xff0c;注意去看一下。还有头文件什么的在ds1302中记得加上 参考代码&#xff1a; #include "reg52.h" #include "ds1302.h"unsigned char Write_…

Java 数据类型和变量

基本类型 整数类型&#xff1a;byte short int long&#xff0c;分别占 1、2、4、8 个字节&#xff1b; 在给 long 类型变量赋值时&#xff0c;如果超过了 int 的表示范围&#xff0c;需要在常量后面加大写 L 或小写字母 l&#xff0c;例如&#xff1a;long value 3425352515…

深度解析SPARK的基本概念

关联阅读博客文章&#xff1a; 深入理解MapReduce&#xff1a;从Map到Reduce的工作原理解析 引言&#xff1a; 在当今大数据时代&#xff0c;数据处理和分析成为了企业发展的重要驱动力。Apache Spark作为一个快速、通用的大数据处理引擎&#xff0c;受到了广泛的关注和应用。…

使用QT 开发不规则窗体

使用QT 开发不规则窗体 不规则窗体贴图法的不规则窗体创建UI模板创建一个父类创建业务窗体main函数直接调用user_dialog创建QSS文件 完整的QT工程 不规则窗体 QT中开发不规则窗体有两种方法&#xff1a;&#xff08;1&#xff09;第一种方法&#xff0c;使用QWidget::setMask函…

缓存相关知识总结

一、缓存的作用和分类 缓存可以减少数据库的访问压力&#xff0c;提升整个网站的数据访问速度&#xff0c;改善数据库的写入性能。缓存可以分为两种&#xff1a; 缓存在应用服务器上的本地缓存&#xff1a;访问速度快&#xff0c;但受应用服务器内存限制 缓存在专门的分布式缓存…

【网络安全技术】——网络安全设备(学习笔记)

&#x1f4d6; 前言&#xff1a;网络防火墙&#xff08;简称为“防火墙”&#xff09;是计算机网络安全管理中应用最早和技术发展最快的安全产品之一。随着互联应用的迅猛发展&#xff0c;各种安全问题和安全隐患日渐突出。防火墙及相关安全技术能够最大可能地解决各类安全问题…

官网下载IDE插件并导入IDE

官网下载IDEA插件并导入IDEA 1. 下载插件2. 导入插件 1. 下载插件 地址&#xff1a;https://plugins.jetbrains.com/plugin/21068-codearts-snap/versions 说明&#xff1a;本次演示以IDEA软件为例 操作&#xff1a; 等待下载完成 2. 导入插件 点击File->setting->Pl…

Oracle数据库imp文件导入失败提示:“不是有效的导出文件, 标头验证失败”解决方法

导入数据库时&#xff0c;直接提示不是有效的导出文件&#xff0c;标头验证失败 原因&#xff1a;这是因为导出的imp文件和你当前导入的数据库版本不一致造成的&#xff0c;例如&#xff1a;导出文件版本号12.0.1 导入数据库的版本号11.0.2&#xff0c;会报这个错误。 解决办法…

【GIS学习笔记】ArcGIS/QGIS如何修改字段名称、调整字段顺序?

在先前的ArcGIS学习中&#xff0c;了解到字段名称是不能修改的&#xff0c;只能用新建一个字段赋值过去再删除原字段这种方法实现&#xff0c;字段顺序的调整如果通过拖拽也是不能持久的&#xff0c;需要用导出一个新数据这种方法进行保存&#xff0c;可参考以下链接&#xff1…

Swift中的数据类型

在Swift中&#xff0c;常见的数据类型包括&#xff1a; 整数类型&#xff08;Int&#xff09;&#xff1a;表示整数值&#xff0c;可以是正数、负数或零。例如&#xff1a;-10、0、100。浮点数类型&#xff08;Double和Float&#xff09;&#xff1a;表示带有小数的数值。Doub…