冒泡排序
一,冒泡排序 从大到小
import java.util.Arrays;
public class MaoPao {
public static void main(String[] args) {
int [] arrays={4,223,5,67,85,4,11,1,2};
System.out.println(Arrays.toString(mysoft(arrays)));
}
public static int[] mysoft(int [] arrays){
int tmp=0;
//外层循环判断我们这个i 要执行多少次
for (int i = 0; i <arrays.length-1 ; i++) {
// 内层循环,比价判断两个数,如果第一个数,比第二个数大,则交换位置
//length-1-i;-i 是因为 外层循环每执行一次都会少一个数
for (int j = 0; j <arrays.length-1-i ; j++) {
//如果j+1 比 j 大则交换
if(arrays[j+1]>arrays[j]){
tmp=arrays[j+1];
arrays[j+1]=arrays[j];
arrays[j]=tmp;
}
}
}
return arrays;
}
}
运行 结果
[1, 2, 4, 4, 5, 11, 67, 85, 223]
Process finished with exit code 0
从小到大排序 只需要 把 判断语句 改为
arrays[j+1]<arrays[j]
就行了
import java.util.Arrays;
public class MaoPao {
public static void main(String[] args) {
int [] arrays={4,223,5,67,85,4,11,1,2};
System.out.println(Arrays.toString(mysoft(arrays)));
}
public static int[] mysoft(int [] arrays){
int tmp=0;
//外层循环判断我们这个i 要执行多少次
for (int i = 0; i <arrays.length-1 ; i++) {
// 内层循环,比价判断两个数,如果第一个数,比第二个数小,则交换位置
//length-1-i;-i 是因为 外层循环每执行一次都会少一个数
for (int j = 0; j <arrays.length-1-i ; j++) {
//如果j+1 比 j 小则交换
if(arrays[j+1]<arrays[j]){
tmp=arrays[j+1];
arrays[j+1]=arrays[j];
arrays[j]=tmp;
}
}
}
return arrays;
}
}
运行结果
[1, 2, 4, 4, 5, 11, 67, 85, 223]
Process finished with exit code 0
总结
第二个 for 循环 arrays.lengths-1-i;
为什么减 i
因为 外层循环 每执行一次将少一个数,所以需要减i