算法:冒泡排序

package com.lyil;

import java.util.Arrays;
import java.util.Random;

/**
 * 冒泡排序算法 
 * 数组长度为:n
 * 第1次排序,从后往前推,依次比较,交换位置,取出最小的放到第1个位置(后面的数据会发生交换)
 * 第2次排序,从后往前推,依次比较,交换位置,取出最小的放到第2个位置(后面的数据会发生交换)
 * ......
 * 第n次排序,从后往前推,依次比较,交换位置,取出最小的放到第n个位置(后面的数据会发生交换)
 * 
 * 
 * @author:Administrator
 * @Create:2018年1月30日 @version V1.0
 * @Description:TODO
 */
public class BubbleSort {
	
	
	public static void main(String[] args) {
//		int[] arr = getArr(10, 100);
		int[] arr={127,118,105,101,112,100};
		
		out: for (int i = 0; i < arr.length - 1; i++) {
			boolean exchange = false;
			for (int j = arr.length - 1; j > i; j--) {// 从后往前推,每一次循环即将最小的放到最前面,第i次需要执行循环体length-i次,故j>i即可
				// 交换数据
				if (arr[j] < arr[j - 1]) {
					// 执行交换
					int temp = arr[j - 1];
					arr[j - 1] = arr[j];
					arr[j] = temp;
					exchange = true;
				}
			}
			// 没有执行交换,则表明排序结束
			if (!exchange) {
				break out;
			}

			System.out.println(Arrays.toString(arr));
		}
		

	}

	private static int[] getArr(int len, int n) {
		int[] arr = new int[len];
		for (int i = 0; i < len; i++) {
			arr[i] = new Random().nextInt(n);
		}
		return arr;
	}

}

点赞