public class Test_10_11__3 {
public static void main(String[] args) {
int[]arr=new int[]{5,7,3,1,0,9,2,1,4,8,5};
//Diao(arr); //测试函数
print(arr);//打印数组
//冒泡排序
for (int i = 0; i < arr.length-1; i++) {
//循环次数,每次循环可以排好一个,故到最后一次不必循环,可以省去
for (int j = 0; j < arr.length-i-1; j++) {
//数组元素两两比较
//外层循环进行一次,内层循环便减少一次(最后一个排好了,不必比较(非得比的话也没问题)),故循环判定的下标-i(即,j<arr.length-i)
// 由于是arr[j]和arr[j+1]比较,故要使循环判定的下标减一(即,使j+1<arr.length-i)
if(arr[j]>arr[j+1]){
//大的放后面,也可以把小的放后面 if(arr[j]<arr[j+1]){}
//交换两元素
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
print(arr);//验证排序
//冒泡排序,掌握核心思想,写法有很多,原理都一样
// 其它写法见下面的方法
}
public static void print(int[]arr){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();//换行
}
//冒泡排序的其它写法,有兴趣的可以看一下,试一试
public static void Fun1(int[]arr){
for (int i = 0; i < arr.length-1; i++) {
for (int j = arr.length-1; j >= i+1; j--) {
if(arr[j]>arr[j-1]){
int tmp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=tmp;
}
}
}
}
public static void Fun2(int[]arr){
for (int i = arr.length; i > 0; i--) {
for (int j = 0; j < arr.length-(arr.length-i)-1; j++) {
if(arr[j]<arr[j+1]){
int tmp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=tmp;
}
}
}
}
//自己试着写一下呗.....
//调用一下自己写的函数
public static void Diao(int[]arr){
print(arr);
Fun1(arr);//调用其它函数,把Fun1换了就可以了
print(arr);
}
}
|