冒泡排序
思路
1.依次对数组中每对相邻的元素比对,如果前者比后者大,那么它们就交换位置,这样一趟下来总能把一个最大元素送到末尾的位置
2.可以这么说,每一趟排序进行之后使得数组后面的有序部分规模在增大,前面的无序部分规模在减小
3.经过这样多次交换之后数组就有序了
代码
package sort;
public class BubbleSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] a= {6,-1,3,-3,2,9,1,2,3};
bubblesort(a);
for(int i=0;i<a.length;i++) {
System.out.printf("%d ",a[i]);
}
System.out.println();
}
//冒泡排序
public static void bubblesort(int[] arr) {
int len=arr.length;
int temp;
boolean flag=false;//表示是否交换过
for(int i=0;i<len;i++) {
for(int j=0;j<len-i-1;j++) {
if(arr[j]>arr[j+1]) {
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=true;
}
}
if(!flag) {//如果一趟一次都没有交换过直接退出
break;
}else {
flag=false;//重置false下一轮判断
}
}
}
}