package suanfa;
//冒泡排序
public class Maopao {
public void start(){
int[] arr = {4,6,2,3,1,90,43,13,68,346,77,24,20};
if(arr.length<2)
return;
int mark=0;
int count=0;
for(int i=arr.length-1;i>0;i--) {//轮回n-1次
for(int j=0;j<i;j++) {
if(arr[j]>arr[j+1]) {
// mark = arr[j+1];
// arr[j+1]= arr[j];
// arr[j]=mark;
//交换位置
arr[j]=arr[j+1]^arr[j];
arr[j+1]=arr[j+1]^arr[j];
arr[j]=arr[j+1]^arr[j];
count = 1;
}
}if(count==0){
return;
}
count = 0;
for(int a : arr) {
System.out.print(a+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
Maopao maopao =new Maopao();
maopao.start();
}
}
mark为第三变量,也可用上述代码不使用第三变量,其中count是对冒泡排序的一个优化。
当在某一轮回中不再进行比较时,则表示前面的数已经不需要排序了,就应该结束。
|