网站首页 > java教程 正文
大家好,我是小杨君。
今天依旧会延续昨天讲的内容,java 的数组排序相关问题。
1. 昨天给大家简单介绍了一下 java 中的冒泡排序,今天会给大家介绍另一种方式,选择排序。首先选择排序,它的排序的速度会比冒泡排序更快,而且也是常用的排序方式。同样在写代码之前需要搞懂选择排序的基本原理和逻辑问题。为了方便大家去理解,这边写了一个文档。
- 首先可以看下原始数组,原始数组是无序的,需要把其中具有典型的元素找出来,与最后一位数字、最后一位元素进行位置的调换,也就是数值的交换。这个元素可以是最大的,也可以是最小的。
- 需要定一个指针,始终指向特定的元素。这个指针需要跟便利的里面元素进行比较,如果指针指向的元素满足相关的条件,则把相关便利的元素的下标附给指针的下标,这样就能保证找出最大值或者最小值。
这么说比较笼统,举个例子,比如这边数值定一个指针 index,它的初始值为零,也就是下标为零。默认第一位数字将与接下来数字进行比较,看是否满足条件。如果第一位数字就是第一位元素大于它,就比较第二位,依旧大于它,比较第三位,比较第四位,直至所有元素对比完成。
- 如果确保它是始终唯一的特定性元素,就与最后一位数字进行位置的调换。完成位置的调换之后,就把剩下的元素以此方法依旧保证相关的指针指向特定的元素进行便利,保证最大值或最小值与最后一位位置进行调换,从而实现最终的排序完成。
2. 在这里要注意几个规律问题。
- 首先可以看一下排序的次数,这里的排序的次数相当于是第一次外部循环,第二次内部循环是对数组进行内部循环,定义成 j,通常这边方便大家理解,所以定义成 j 以后写可以根据自己的命名规则来。
- i 的次数是比原始的数组少一位的,所以方便如何去理解 i 的初始值和长度,这边需要判断它与原始数组的规律问题,次数等于数组减一。
- 接下来是内部数据的便利,内部数据会看到一个规律,就是数组减去排序的次数,就是剩下便利的数据的个数。这样理解下来很容易把接下来代码整理出来。
3. 再来就给大家去演示一下整个代码的写法。
- 需要定一个指针,保证它是可以指向特定元素的,这边可以备注一下。
- 然后对外部次数进行定义,小于数组的长度,往下进行。这就是刚说的外部的次数,是竖左竖减一,这个大家要注意一下。
- 然后把指针进行初始化,指针的作用相当于是数组的下标,初始值为零,内部循环初始值直接可以从下标直接可以从一开始定义成 j,这样避免重复。j 的长度小于数组的长度减去遍历次数。
在这里需要注意一下,这边需要 j 等于,因为长度的下标相当于是数组的最后一位,过一会需要把特定的元素以最后一位数组的最后一位进行位置调换,也就是数值的交换,所以需要到时候调用最后一位数据元素,所以这边需要等于它,这边就可以进行判断了。
如果定义的指针元素小于这边数据从小到大排,所以这边要找到最大的数字与最后一位进行位置的调换,所以这边要判断一下小于当前便利的数据,如果满足这个条件就要把最大的数据的下标附给指针,这样就保证了特定的元素能够体现出来。
接下来就可以去进行位置的调换了,同样定一个第三方等于便利数据的最后一位,这边就直接复制下来,把最大的元素与最后一位赋给最后一位,把最后一位与最大的数据同样覆过去,这样就完成了最大的数据元素与最后一位的元素进行了位置调换。
接下来就可以完成打印,这边便利一下结果,定一个 a 便利数组进行打印,同样这边不需要换行,就可以运行,看一下结果就完成了数据的从小到大的排序。
逻辑很简单,只要大家去搞懂具体的逻辑问题,相信在加班的学习过程中一定会迎刃而解。
猜你喜欢
- 2024-10-22 Java几种排序方式(java排序的方法有哪些)
- 2024-10-22 Java排序算法——归并排序(Merge Sort)
- 2024-10-22 Java 集合中的排序算法浅析(java集合排序工具类)
- 2024-10-22 数组排序与二分查找法(二分查找排序树)
- 2024-10-22 LeetCode基础算法题第85篇:求有序数组的平方再排序
- 2024-10-22 Java中Arrays的两种排序方法(sort和parallelSort)比较
- 2024-10-22 深入理解Java中Comparable和Comparator排序
- 2024-10-22 Java常见知识之冒泡排序#冒泡排序
- 2024-10-22 Java数组之Arrays方法(java array数组)
- 2024-10-22 常用集合的排序方法——Java进阶知识讲义系列(七)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)