冒泡排序

冒泡排序

思路

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下一轮判断
			}
		}
	}

}

原文地址:https://www.cnblogs.com/mengxiaoleng/p/11657366.html