单片机程序编写代码查找最小值(单片机最大值最小值编程)

单片机程序编写代码查找最小值(单片机最大值最小值编程)查找元素索引位置 基本查找 根据数组元素找出该元素第一次在数组中出现的索引 案例中查找元素 2 的索引 索引为 7 运行后返回结果正确 二分查找 使用二分查找查找出该元素在数组中第一次出现的索引 前提 该数组的元素必须有序 思想 每一次都查找中间的元素 比较大小就能减少一半的元素 具体代码实现 案例中查找元素为 40 索引为 3 运行后返回结果正确 八大排序方法 冒泡排序 原理

大家好,我是讯享网,很高兴认识大家。



查找元素索引位置

基本查找

根据数组元素找出该元素第一次在数组中出现的索引

案例中查找元素2的索引,索引为7;

运行后返回结果正确:

Java找出集合中的最大值和最小值_System
讯享网

二分查找

使用二分查找查找出该元素在数组中第一次出现的索引

前提:该数组的元素必须有序

思想:每一次都查找中间的元素,比较大小就能减少一半的元素

Java找出集合中的最大值和最小值_数组_02

具体代码实现:

案例中查找元素为40,索引为3;

运行后返回结果正确:

Java找出集合中的最大值和最小值_数组_03

八大排序方法

冒泡排序

原理:数组元素两两比较,交换位置,大元素往后放,经过一轮比较后,最大的元素,就会被排到数组的最后

图解:

Java找出集合中的最大值和最小值_数组_04

代码部分:

先进行第一轮排序,看看效果:

Java找出集合中的最大值和最小值_数组_05

下面进行多轮排序:

代码部分

笨方法:多次for循环,比较繁琐,重复循环,语句没营养,看看就好,主要是得能想到,为嵌套循环做准备

Java找出集合中的最大值和最小值_Java找出集合中的最大值和最小值_06

使用嵌套循环(语句精简,没有废话):

Java找出集合中的最大值和最小值_java数组设计的原理_07

冒泡排序就介绍到这里~

选择排序

原理:从0索引处开始,依次和后面的元素进行比较,小的元素往前放,经过一轮比较后,最小的元素就会出现在最小索引处

图解:

Java找出集合中的最大值和最小值_数组_08

代码部分:多轮排序(优化前)

Java找出集合中的最大值和最小值_数组_09

优化代码:嵌套循环:

Java找出集合中的最大值和最小值_数组_10

选择排序就介绍到这里~

直接插入排序

原理:从1索引处开始,将后面的元素与前一位比,小于前一位则交换,再与前一位比,如果小于再交换,如此循环,插入之前的有序列表中使之仍保持有序

Java找出集合中的最大值和最小值_System_11

(方法1):代码实现:

Java找出集合中的最大值和最小值_Java找出集合中的最大值和最小值_12

(方法2)代码实现:

由于很多地方需要使用前后元素值交换,因此封装成一个方法:代码如下:

使用自己封装的方法:

直接插入排序就介绍到这里~

希尔排序

希尔排序又称缩小增量排序

基本思想:先将原表按增量ht分组;每个子文件按照直接插入法排序。同样,用下一个增量ht/2将文件再分为自问见,在直接插入法排序。直到ht=1时整个文件排好序。

关键:选择合适的增量。

希尔排序算法9-3:可以通过三重循环来实现。

图示:

Java找出集合中的最大值和最小值_System_13

将数组按步长为5的间隔两两分为一组,每组两个元素进行比较大小,小的放置于前面,大的放置于后面;

由此排序一次后,大致可以将整个数组中较小的元素放在前面,较大的放在后面。

下面数组长度为8,第一次间隔取4,第二次间隔取2,第三次间隔取1,具体实现见下图:

Java找出集合中的最大值和最小值_数组_14

代码实现(使用克努特序列,合理选择增量):

希尔排序就介绍到这里~

快速排序

原理:分治法:比大小,再分区

从数组中取出一个数,作为基准数

分区:将比这个数大或等于的书全放到他的右边,小于他的数全放到他的左边。

再对左右区间重复第二步,直到各区间只有一个数。

实现思路

将基准数挖出形成第一个坑

由后向前找比它小的数,找到后挖出此数填到前一个坑中

由前向后找比它大或等于的数,找到后也挖出此数填到前一个坑中。

再重复执行上述两步骤

Java找出集合中的最大值和最小值_i++_15

代码实现:

快速排序就介绍到这里~

归并排序

归并排序(Merge Sort)就是利用归并的思想实现排序的方法

原理:假设初始序列有N个记录,则可以看成是N个有序的子序列,每个子序列的长度为1,然后两两归并,得到N/2个长度为2或1的有序子序列,再两两归并。。。如此重复,直至得到一个长度为N的有序序列为止,这种排序方法称为2路归并排序

Java找出集合中的最大值和最小值_java数组设计的原理_16

代码实现:

归并排序就介绍到这里~

基数排序

基数排序不同于之前的各类排序

前面的排序或多或少通过使用比较和移动记录来实现排序

而基数排序的实现不需要进行对关键字的比较,只需要对关键字进行“分配”与“收集”两种操作即可完成

下面通过图来解释:

第一次排序:按照个位进行分组

Java找出集合中的最大值和最小值_java数组设计的原理_17

分组后结果:

Java找出集合中的最大值和最小值_数组_18

再将元素逐一取出:

Java找出集合中的最大值和最小值_i++_19

第二次排序:根据十位上的数进行排序

Java找出集合中的最大值和最小值_Java找出集合中的最大值和最小值_20

再依次将元素取出:

Java找出集合中的最大值和最小值_i++_21

第三轮排序:根据百位上的数进行排序

Java找出集合中的最大值和最小值_java数组设计的原理_22

最后将所有元素取出:

Java找出集合中的最大值和最小值_i++_23

代码实现:

基数排序就介绍到这里~

堆排序

堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序

将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。

将其与末尾元素进行交换,此时末尾就为最大值

然后将剩余n-1个元素重新构造成一个堆,这样就会得到n个元素的次小值

如此反复的执行,便能得到一个有序序列了

Java找出集合中的最大值和最小值_System_24

代码实现:

堆排序就介绍到这里~

小讯
上一篇 2025-06-09 21:32
下一篇 2025-05-31 10:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/182295.html