数组里的算法

数组算法:冒泡排序

话不多说,请看代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.array;
import java.util.Arrays;
/**
* @Author: liuchang
* @CreateTime: 2020.7.11
* @Description: 郑州工程技术学院-中德学院
*/
/*
冒泡排序:
1.排序原理:数组元素两两比较,交换位置,大元素往后放,那么经过一轮比较后,
最大的元素将出现在最大索引处
*/
public class ArrayDemo03 {
public static void main(String[] args) {
int[] array={12,20,42,80,10,30,11,12};
/*
我们先写一段代码来探究本质:
数组里总共有8个数,两者比较,比较次数为7次。所以要循环七次。
什么时候进行换位呢?当array[i]>array[i+1]时进行换位。其它情况不用管。
怎么进行换位的呢?使用一个中间变量进行二者之间的传值。
for (int i = 0; i < array.length - 1; i++) {
if (array[i]>array[i+1]){
int t=array[i];
array[i]=array[i+1];
array[i+1]=t;
}
}
//第一个循环得到结果:[12, 20, 42, 10, 30, 11, 12, 80]
第一次比较后,最后一次比较不需要进行(因为第一次比较确定是80最大了),所以再减1,减少一次比较次数
换位代码都不变
for (int i = 0; i < array.length - 1 - 1; i++) {
if (array[i]>array[i+1]){
int t=array[i];
array[i]=array[i+1];
array[i+1]=t;
}
}
//第二个循环得到结果:[12, 20, 10, 30, 11, 12, 42, 80]
System.out.println(Arrays.toString(array));
*/
//由上述代码,可以发现,我们可以再使用一层for循环进行代码简化。
/*
代码解析:
就是多了一层for循环。
*/
for (int j = 0; j < array.length - 1; j++) {
for (int i = 0; i < array.length - 1 - j; i++) {
if (array[i]>array[i+1]){
int t=array[i];
array[i]=array[i+1];
array[i+1]=t;
}
}
}
//这里是使用了数组的工具类Arrays类中的toString方法
System.out.println(Arrays.toString(array));
}

}
点击查看
-------------------本文结束 感谢您的阅读-------------------