利用冒泡排序,对以下数组进行升序和降序 {1,5,12,36,55,78,98}
private static void fun3() {
int[] a = {1,12,5,36, 55, 78, 98,88}; //前半部分是升序排列
for (int i = 0; i < (a.length-1)/2; i++) { //外层循环角标a[0]—a.length-1
for (int j =i; j < (a.length-i-1)/2; j++) { //内层循环数组中的每个元素
if(a[j+1]<a[j]){
int t=a[j+1]; //交换位置
a[j+1]=a[j];
a[j]=t;
}
}
}
for (int i = (a.length-1)/2; i < a.length; i++) { //后半部分是降序排列
for (int j =i; j < a.length-1; j++) {
if(a[j+1]>a[j]){
int t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
}
for(int b:a){
System.out.print(b+" ");
}
}
注意要点:
1、循环上下限要区分好,在进行一半升序一半降序时,设定上限应该为数组的一半
2、交换元素时引用第三方变量时,交换方法是斜对角。