排列数组?不换数组咱也能排!
今晚又迎来了每周我并不期待的Java编程课 如往常一样,带着电脑自己敲自己的,他讲他的哈哈哈 讲到数组排列时,看了一下,他讲的实在方法太复杂,血压上去了,我就也上去了2333 奈何众目睽睽之下,手抖、冒汗、思绪混乱、还是给讲砸了,所以在这记录一下,但就是不服!欸,就是不服~
既然不服,那我们就拉出来讲一讲! 下面我们来看看吧~
要想排序第一步就是比较嘛,那么该怎么比呢?掏出我的小黑板待我为你一一道来。
通过上面的分析,我们可以知道,这时候数组中最大的值已经在第一位了,那么我们要做的就是以此类推,逐步找出第二大的第三大的数。最终实现数组的排列!
通俗点讲就是军训排队高的往前矮的往后,先拿排头第一个人和后面的人都比一次,每找到一个比他高的就换位,然后换上来的接着比,必到最后一名为止,这个时候这队第一个就已经是队伍里最高的了,然后从第二个人开始用同样的方法进行比较
第一步先搞明白我们怎么换位置,以a、b两个值为例将其互换数值
int a = 6;
int b = 8;
int x = a; //定义一个变量先暂存a的值
int a = b; //将b的值赋给a
int b = x; //再将保存在x里的a的值赋值给b
接着来搞明白我们要如何实现这种方式相同但是变量不同的重复性工作。假设一列人有9个,每个人都要进行比较,9个人也就是要进行9次,我们在这把他看成一个for
;每个人又要和每次比较剩下的人逐一对比、换位,在这我们把他看成for
中之for
,也就是我们说的嵌套
int[] arr = {888,99,2,33,21,533,3566,213}; //题目数组
for (int i = 0;i < arr.length;i++) { //定义第一层for
for (int u = i;u < arr.length;u++) { //定义第二层for
//u = i是为了排除上一次比较中
} //已经确定位置的数值再参加比较
}
写到这里,我们已经解决了工作重复性的问题,接下来就是将比较和换位环节放进去即可,那么比较和换位怎么实现呢,这里我们用到if
语句和我们上面讲的数据互换
int[] arr = {888,99,2,33,21,533,3566,213}; //题目数组
if (arr[i] < arr[u]) {
int x = arr[i];
arr[i] = arr[u];
arr[u] = x;
}
//以上是实现比较和换位的代码
======================================================================
//合并起来就是
int[] arr = {888,99,2,33,21,533,3566,213}; //题目数组
for (int i = 0;i < arr.length;i++) {
for (int u = i;u < arr.length;u++) {
if (arr[i] < arr[u]) { //进行比较
int x = arr[i]; //如果条件成立数据位置互换
arr[i] = arr[u];
arr[u] = x;
}
}
}
到此,整体的需求我们就都实现了,最后我们进行输出结果即可
int[] arr = {888,99,2,33,21,533,3566,213}; //题目数组
for (int i = 0;i < arr.length;i++) {
for (int u = i;u < arr.length;u++) {
if (arr[i] < arr[u]) { //进行比较
int x = arr[i]; //如果条件成立数据位置互换
arr[i] = arr[u];
arr[u] = x;
}
}
}
for(int o = 0;o < arr.length;o++){
System.out.println(arr[o]);
}
到这我们排列好的数组就出现啦!!!
无它,就是觉得有简便的方法不用那不是费力不讨好么?咱要学就要学最好的!
↓代码要格式化,大家也不要例外哦↓
public class Test {
public static void main(String[] args) {
int[] arr = {888,99,2,33,21,533,3566,213}; //题目数组
for (int i = 0;i < arr.length;i++) {
for (int u = i;u < arr.length;u++) {
if (arr[i] < arr[u]) { //进行比较
int x = arr[i]; //如果条件成立数据位置互换
arr[i] = arr[u];
arr[u] = x;
}
}
}
for(int o = 0;o < arr.length;o++){
System.out.println(arr[o]);
}
}
}
废话少说
快去提升吧哈哈
本篇文章采用 署名 4.0 国际 (CC BY 4.0) 许可协议进行许可。